/**
 * Copyright 2019-2020 Huawei Technologies Co., Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <gtest/gtest.h>

#include "common/formats/format_transfers/format_transfer_fracz_hwcn.h"

#include "common/formats/format_transfers/format_transfer.h"
#include "common/fp16_t.h"

namespace ge {
namespace formats {
class UtestFormatTransferFracZHwcn : public testing::Test {
 protected:
  void SetUp() {}
  void TearDown() {}
};

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_data_type_invalid_data_type) {
  uint8_t data[16 * 1 * 16 * 16] = {1};

  TransArgs args{data, FORMAT_FRACTAL_Z, FORMAT_HWCN, {16, 1, 32, 16}, {4, 4, 1, 1}, DT_UNDEFINED};
  TransResult result;

  FormatTransferFracZHwcn transfer;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_src_format_reserved) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_RESERVED, FORMAT_HWCN, {16, 1, 16, 16}, {4, 4, 1, 1}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_dst_format_reserved) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_FRACTAL_Z, FORMAT_RESERVED, {16, 1, 16, 16}, {4, 4, 1, 1}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_src_shape) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_FRACTAL_Z, FORMAT_HWCN, {16, 1, 1, 16, 16}, {4, 4, 1, 1}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_src_shape2) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_FRACTAL_Z, FORMAT_HWCN, {16, -1, 16, 16}, {4, 4, 1, 1}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_dst_shape) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_FRACTAL_Z, FORMAT_HWCN, {16, 1, 16, 16}, {4, 4, 1}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_dst_shape2) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_FRACTAL_Z, FORMAT_HWCN, {16, 1, 16, 16}, {4, 4, -1, 1}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_src_dst_shape_relation1) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_FRACTAL_Z, FORMAT_HWCN, {16, 1, 16, 16}, {4, 4, 17, 1}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_invalid_src_dst_shape_relation2) {
  float data[16 * 1 * 16 * 16] = {1};

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data), FORMAT_FRACTAL_Z, FORMAT_HWCN, {16, 1, 16, 16}, {4, 4, 1, 17}, DT_FLOAT};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), PARAM_INVALID);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_fp16_success_lt_cube) {
  uint16_t data_4d[1 * 1 * 16 * 16] = {
      14822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  };
  uint16_t data[1 * 1 * 1 * 1] = {
      14822,
  };

  TransArgs args{
      reinterpret_cast<uint8_t *>(data_4d), FORMAT_FRACTAL_Z, FORMAT_HWCN, {1, 1, 16, 16}, {1, 1, 1, 1}, DT_FLOAT16};
  TransResult result;

  FormatTransferFracZHwcn transfer;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(data));
  for (int i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<uint16_t *>(result.data.get()))[i], data[i]);
  }
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_fp16_success_eq_cube) {
  uint16_t data_4d[4 * 1 * 16 * 16] = {
      9254,  9808,  12314, 14964, 15320, 11958, 14734, 12285, 12664, 14762, 15338, 14864, 14989, 15042, 13537, 12967,
      14370, 11563, 14686, 14765, 6146,  14641, 14825, 13758, 14427, 14774, 14510, 14906, 14717, 12654, 11194, 13658,
      15115, 14700, 12754, 11263, 14550, 14609, 13676, 15286, 13811, 15010, 13137, 15086, 14176, 14242, 13476, 12807,
      12974, 14927, 14992, 15001, 12314, 15348, 13879, 15127, 14728, 11712, 15311, 13665, 9579,  14996, 12895, 15249,
      11813, 14360, 14957, 14906, 15357, 11777, 13499, 12547, 7477,  14713, 12719, 15193, 11497, 11936, 14421, 14014,
      15213, 14100, 10567, 14414, 9380,  13397, 14428, 11044, 14904, 12958, 15088, 15188, 14994, 15031, 14115, 14352,
      8484,  14791, 11353, 14359, 15354, 15246, 14423, 9961,  11284, 14085, 14643, 15183, 13439, 13375, 13252, 12470,
      14426, 14827, 14663, 13982, 15126, 15346, 14727, 12647, 14815, 14321, 10971, 14038, 14902, 12415, 14357, 13571,
      14689, 15065, 14794, 11504, 14698, 14253, 13380, 12805, 13797, 14627, 14017, 10845, 14582, 14869, 13567, 15265,
      14107, 13407, 13917, 15226, 14034, 15343, 15258, 14178, 14593, 13625, 13918, 13515, 14207, 15084, 15178, 13027,
      13477, 9288,  12640, 14660, 12607, 15270, 13900, 15156, 14962, 14434, 12310, 14439, 14073, 14692, 15213, 15145,
      12302, 15078, 10682, 8360,  15256, 14801, 14936, 14708, 14680, 14052, 13577, 14780, 10408, 15145, 12419, 15265,
      14900, 14612, 13750, 14428, 14625, 13533, 13654, 11131, 14362, 14571, 12116, 12137, 15058, 12849, 11897, 13640,
      15224, 15023, 15289, 4884,  13302, 14033, 14977, 14743, 14785, 14615, 13925, 14471, 14574, 12883, 15100, 13668,
      11702, 11637, 11013, 14757, 15046, 11736, 14669, 14371, 14720, 13893, 11595, 15109, 12415, 14408, 13321, 12791,
      12817, 12533, 14835, 14670, 14095, 13019, 15037, 15291, 13539, 14963, 13055, 13072, 12319, 15305, 15258, 14156,
      14669, 14412, 12449, 14693, 14592, 14002, 14219, 10475, 13567, 15006, 14249, 15051, 14998, 13900, 14858, 10314,
      15301, 15210, 14528, 14832, 13871, 14029, 14739, 14742, 13017, 15344, 13962, 14374, 15097, 12718, 13726, 11288,
      10655, 14873, 14566, 12878, 14520, 14819, 15115, 13500, 11464, 14684, 15024, 14527, 13446, 14934, 13954, 11160,
      13498, 14571, 13377, 14247, 14691, 15341, 12222, 13146, 14234, 14961, 14869, 10908, 13639, 14799, 12839, 14969,
      15211, 15082, 14818, 13295, 14892, 13585, 10640, 14044, 14139, 10387, 13315, 14363, 13863, 13415, 14326, 15030,
      15280, 15217, 15172, 13564, 14291, 10036, 15344, 15274, 12265, 11798, 13584, 15075, 13659, 15116, 14881, 12500,
      14627, 9877,  13400, 15020, 11961, 14856, 14255, 6203,  13984, 13572, 14403, 15354, 13728, 14874, 14849, 14694,
      14462, 15105, 14228, 9727,  13873, 13910, 13577, 14152, 11295, 14572, 15155, 12656, 13703, 14807, 14725, 14907,
      14322, 14482, 15112, 8303,  14163, 13970, 14087, 14276, 14336, 14557, 14255, 14640, 14966, 14426, 13329, 13891,
      13692, 10423, 14630, 12685, 13244, 14359, 12750, 14677, 15295, 14243, 14422, 14178, 14623, 14117, 13387, 14649,
      13853, 14885, 11291, 15295, 14399, 15047, 15338, 11707, 13937, 13962, 12573, 14845, 14410, 13935, 12701, 14474,
      14605, 13172, 13965, 11917, 13729, 13601, 15128, 14986, 14227, 14603, 13596, 13663, 14864, 13336, 15341, 14261,
      14671, 15133, 13495, 14387, 15308, 14201, 14107, 14193, 9416,  15009, 14942, 14759, 15218, 15172, 14008, 13605,
      14961, 13211, 12617, 14472, 14510, 13968, 15230, 14413, 15254, 14829, 14740, 15314, 13192, 15321, 13375, 15287,
      14533, 14546, 14838, 15284, 14978, 14418, 14749, 15285, 13631, 14637, 15233, 14583, 15358, 14694, 15075, 14006,
      15042, 13341, 14791, 14404, 14401, 14543, 14609, 13877, 14581, 13513, 13959, 13656, 13559, 15086, 13102, 12707,
      12366, 13106, 12647, 14381, 15003, 14587, 14981, 10618, 14570, 12555, 13656, 14070, 15289, 3801,  13908, 15052,
      15227, 14696, 14949, 14292, 14339, 9995,  14526, 15181, 15147, 13843, 13520, 11276, 14455, 13650, 14076, 13107,
      14370, 13651, 15211, 15172, 11747, 14520, 13497, 12307, 9476,  11792, 15353, 14573, 14342, 14252, 12604, 15326,
      13828, 13654, 13891, 15187, 14739, 13578, 12493, 14816, 14539, 13780, 14409, 14207, 14351, 14308, 14508, 13241,
      14390, 7997,  14902, 10892, 15220, 14772, 11973, 15081, 11390, 14957, 14647, 14881, 8089,  15345, 14546, 13712,
      14139, 15087, 13870, 14943, 13450, 14439, 13201, 14239, 11054, 14928, 14443, 13789, 12925, 15312, 13915, 14665,
      14976, 13816, 15015, 15091, 14645, 12833, 15310, 14556, 12385, 7916,  13730, 15212, 14382, 14437, 14701, 15256,
      13204, 13603, 10229, 11798, 14925, 12702, 14966, 15174, 15236, 13170, 14904, 12368, 15183, 14933, 14574, 12521,
      14676, 14315, 15228, 13266, 13811, 13409, 11744, 15064, 13472, 13606, 14669, 15268, 12872, 13914, 13782, 14895,
      12858, 12754, 14330, 15122, 14658, 14773, 15328, 10775, 12319, 13474, 14203, 13552, 14323, 14940, 14983, 14407,
      13769, 15332, 15360, 14662, 12716, 14630, 14712, 14532, 15016, 13804, 13112, 13650, 15201, 14993, 13636, 11165,
      14651, 14671, 13865, 14527, 14326, 13755, 13399, 14834, 13899, 13681, 11506, 13406, 14294, 13135, 9807,  15113,
      13951, 14012, 11954, 14379, 14730, 12604, 12516, 14637, 13905, 14203, 14158, 14735, 11521, 14769, 10761, 14158,
      14647, 14783, 14551, 14338, 12664, 15078, 13049, 14783, 13194, 15252, 14988, 14923, 14395, 12582, 14538, 10491,
      14843, 13609, 12710, 13806, 14358, 14794, 14908, 14161, 14885, 13527, 14638, 15146, 13358, 11445, 14039, 14754,
      9236,  15172, 14838, 12705, 14387, 15069, 14638, 12133, 12560, 13382, 14616, 10303, 14593, 13415, 14266, 14986,
      12917, 11836, 14865, 11406, 15353, 12771, 12955, 14673, 12633, 13525, 11425, 13112, 13516, 13232, 11946, 14345,
      13746, 14009, 13385, 14838, 13991, 15258, 15046, 10990, 9407,  14763, 14637, 12530, 14804, 15341, 13765, 12177,
      14545, 14983, 12315, 14381, 13688, 14967, 13539, 15264, 13341, 13931, 15204, 14455, 14590, 14433, 13293, 13503,
      15002, 13896, 14673, 15020, 11256, 15130, 14911, 13757, 14493, 14969, 14069, 6585,  13131, 12946, 15173, 14687,
      7536,  14171, 15169, 11482, 14079, 14833, 13446, 15348, 13965, 13779, 14601, 12126, 14277, 14515, 15060, 14600,
      15173, 14799, 15168, 14752, 13523, 14409, 14369, 12535, 12290, 15355, 14284, 12924, 15230, 13471, 13711, 13050,
      14104, 14792, 15208, 11858, 13929, 14534, 13852, 15352, 14469, 15293, 14318, 14362, 12273, 14811, 13223, 12908,
      15067, 5531,  13562, 14874, 14376, 13028, 15073, 13512, 14347, 13293, 15218, 12350, 14174, 10169, 13333, 11814,
      15152, 14020, 14447, 14753, 15349, 14772, 15220, 14235, 10795, 14596, 14593, 14929, 14092, 15246, 15114, 14686,
      15140, 14848, 14495, 13230, 14804, 13847, 15132, 13467, 12491, 13701, 13848, 14682, 7191,  14771, 14354, 14841,
      13645, 12889, 12196, 14052, 14614, 12446, 13295, 13004, 13422, 14743, 12386, 11764, 15334, 13080, 14883, 13450,
      13390, 12353, 14936, 11279, 15089, 9586,  12649, 14718, 12961, 14114, 14383, 13558, 13366, 14745, 13930, 15214,
      15186, 14259, 14519, 11904, 10138, 14068, 14833, 12266, 11271, 12727, 14984, 14482, 13063, 15139, 14367, 15105,
      14829, 14868, 14750, 11535, 13272, 13556, 15290, 15147, 12188, 15356, 15023, 13514, 13558, 11827, 14330, 14562,
      12742, 14210, 14735, 8360,  14940, 11634, 14529, 12089, 7702,  13384, 14789, 14909, 11698, 13389, 13429, 14320,
      13259, 14533, 11509, 14308, 7516,  14521, 14928, 15212, 14638, 13400, 9815,  14251, 13370, 14737, 14241, 13099,
  };
  uint16_t data[2 * 2 * 16 * 16] = {
      9254,  14370, 15115, 12974, 11813, 15213, 8484,  14426, 14689, 14107, 13477, 12302, 14900, 15224, 11702, 12817,
      9808,  11563, 14700, 14927, 14360, 14100, 14791, 14827, 15065, 13407, 9288,  15078, 14612, 15023, 11637, 12533,
      12314, 14686, 12754, 14992, 14957, 10567, 11353, 14663, 14794, 13917, 12640, 10682, 13750, 15289, 11013, 14835,
      14964, 14765, 11263, 15001, 14906, 14414, 14359, 13982, 11504, 15226, 14660, 8360,  14428, 4884,  14757, 14670,
      15320, 6146,  14550, 12314, 15357, 9380,  15354, 15126, 14698, 14034, 12607, 15256, 14625, 13302, 15046, 14095,
      11958, 14641, 14609, 15348, 11777, 13397, 15246, 15346, 14253, 15343, 15270, 14801, 13533, 14033, 11736, 13019,
      14734, 14825, 13676, 13879, 13499, 14428, 14423, 14727, 13380, 15258, 13900, 14936, 13654, 14977, 14669, 15037,
      12285, 13758, 15286, 15127, 12547, 11044, 9961,  12647, 12805, 14178, 15156, 14708, 11131, 14743, 14371, 15291,
      12664, 14427, 13811, 14728, 7477,  14904, 11284, 14815, 13797, 14593, 14962, 14680, 14362, 14785, 14720, 13539,
      14762, 14774, 15010, 11712, 14713, 12958, 14085, 14321, 14627, 13625, 14434, 14052, 14571, 14615, 13893, 14963,
      15338, 14510, 13137, 15311, 12719, 15088, 14643, 10971, 14017, 13918, 12310, 13577, 12116, 13925, 11595, 13055,
      14864, 14906, 15086, 13665, 15193, 15188, 15183, 14038, 10845, 13515, 14439, 14780, 12137, 14471, 15109, 13072,
      14989, 14717, 14176, 9579,  11497, 14994, 13439, 14902, 14582, 14207, 14073, 10408, 15058, 14574, 12415, 12319,
      15042, 12654, 14242, 14996, 11936, 15031, 13375, 12415, 14869, 15084, 14692, 15145, 12849, 12883, 14408, 15305,
      13537, 11194, 13476, 12895, 14421, 14115, 13252, 14357, 13567, 15178, 15213, 12419, 11897, 15100, 13321, 15258,
      12967, 13658, 12807, 15249, 14014, 14352, 12470, 13571, 15265, 13027, 15145, 15265, 13640, 13668, 12791, 14156,
      14669, 15301, 10655, 13498, 15211, 15280, 14627, 14462, 14322, 13692, 13853, 14605, 14671, 14961, 14533, 15042,
      14412, 15210, 14873, 14571, 15082, 15217, 9877,  15105, 14482, 10423, 14885, 13172, 15133, 13211, 14546, 13341,
      12449, 14528, 14566, 13377, 14818, 15172, 13400, 14228, 15112, 14630, 11291, 13965, 13495, 12617, 14838, 14791,
      14693, 14832, 12878, 14247, 13295, 13564, 15020, 9727,  8303,  12685, 15295, 11917, 14387, 14472, 15284, 14404,
      14592, 13871, 14520, 14691, 14892, 14291, 11961, 13873, 14163, 13244, 14399, 13729, 15308, 14510, 14978, 14401,
      14002, 14029, 14819, 15341, 13585, 10036, 14856, 13910, 13970, 14359, 15047, 13601, 14201, 13968, 14418, 14543,
      14219, 14739, 15115, 12222, 10640, 15344, 14255, 13577, 14087, 12750, 15338, 15128, 14107, 15230, 14749, 14609,
      10475, 14742, 13500, 13146, 14044, 15274, 6203,  14152, 14276, 14677, 11707, 14986, 14193, 14413, 15285, 13877,
      13567, 13017, 11464, 14234, 14139, 12265, 13984, 11295, 14336, 15295, 13937, 14227, 9416,  15254, 13631, 14581,
      15006, 15344, 14684, 14961, 10387, 11798, 13572, 14572, 14557, 14243, 13962, 14603, 15009, 14829, 14637, 13513,
      14249, 13962, 15024, 14869, 13315, 13584, 14403, 15155, 14255, 14422, 12573, 13596, 14942, 14740, 15233, 13959,
      15051, 14374, 14527, 10908, 14363, 15075, 15354, 12656, 14640, 14178, 14845, 13663, 14759, 15314, 14583, 13656,
      14998, 15097, 13446, 13639, 13863, 13659, 13728, 13703, 14966, 14623, 14410, 14864, 15218, 13192, 15358, 13559,
      13900, 12718, 14934, 14799, 13415, 15116, 14874, 14807, 14426, 14117, 13935, 13336, 15172, 15321, 14694, 15086,
      14858, 13726, 13954, 12839, 14326, 14881, 14849, 14725, 13329, 13387, 12701, 15341, 14008, 13375, 15075, 13102,
      10314, 11288, 11160, 14969, 15030, 12500, 14694, 14907, 13891, 14649, 14474, 14261, 13605, 15287, 14006, 12707,
      12366, 15227, 14370, 13828, 14390, 14139, 14976, 13204, 14676, 12858, 13769, 14651, 13951, 14647, 14843, 9236,
      13106, 14696, 13651, 13654, 7997,  15087, 13816, 13603, 14315, 12754, 15332, 14671, 14012, 14783, 13609, 15172,
      12647, 14949, 15211, 13891, 14902, 13870, 15015, 10229, 15228, 14330, 15360, 13865, 11954, 14551, 12710, 14838,
      14381, 14292, 15172, 15187, 10892, 14943, 15091, 11798, 13266, 15122, 14662, 14527, 14379, 14338, 13806, 12705,
      15003, 14339, 11747, 14739, 15220, 13450, 14645, 14925, 13811, 14658, 12716, 14326, 14730, 12664, 14358, 14387,
      14587, 9995,  14520, 13578, 14772, 14439, 12833, 12702, 13409, 14773, 14630, 13755, 12604, 15078, 14794, 15069,
      14981, 14526, 13497, 12493, 11973, 13201, 15310, 14966, 11744, 15328, 14712, 13399, 12516, 13049, 14908, 14638,
      10618, 15181, 12307, 14816, 15081, 14239, 14556, 15174, 15064, 10775, 14532, 14834, 14637, 14783, 14161, 12133,
      14570, 15147, 9476,  14539, 11390, 11054, 12385, 15236, 13472, 12319, 15016, 13899, 13905, 13194, 14885, 12560,
      12555, 13843, 11792, 13780, 14957, 14928, 7916,  13170, 13606, 13474, 13804, 13681, 14203, 15252, 13527, 13382,
      13656, 13520, 15353, 14409, 14647, 14443, 13730, 14904, 14669, 14203, 13112, 11506, 14158, 14988, 14638, 14616,
      14070, 11276, 14573, 14207, 14881, 13789, 15212, 12368, 15268, 13552, 13650, 13406, 14735, 14923, 15146, 10303,
      15289, 14455, 14342, 14351, 8089,  12925, 14382, 15183, 12872, 14323, 15201, 14294, 11521, 14395, 13358, 14593,
      3801,  13650, 14252, 14308, 15345, 15312, 14437, 14933, 13914, 14940, 14993, 13135, 14769, 12582, 11445, 13415,
      13908, 14076, 12604, 14508, 14546, 13915, 14701, 14574, 13782, 14983, 13636, 9807,  10761, 14538, 14039, 14266,
      15052, 13107, 15326, 13241, 13712, 14665, 15256, 12521, 14895, 14407, 11165, 15113, 14158, 10491, 14754, 14986,
      12917, 13746, 14545, 15002, 7536,  15173, 14104, 15067, 15152, 15140, 13645, 13390, 15186, 14829, 12742, 13259,
      11836, 14009, 14983, 13896, 14171, 14799, 14792, 5531,  14020, 14848, 12889, 12353, 14259, 14868, 14210, 14533,
      14865, 13385, 12315, 14673, 15169, 15168, 15208, 13562, 14447, 14495, 12196, 14936, 14519, 14750, 14735, 11509,
      11406, 14838, 14381, 15020, 11482, 14752, 11858, 14874, 14753, 13230, 14052, 11279, 11904, 11535, 8360,  14308,
      15353, 13991, 13688, 11256, 14079, 13523, 13929, 14376, 15349, 14804, 14614, 15089, 10138, 13272, 14940, 7516,
      12771, 15258, 14967, 15130, 14833, 14409, 14534, 13028, 14772, 13847, 12446, 9586,  14068, 13556, 11634, 14521,
      12955, 15046, 13539, 14911, 13446, 14369, 13852, 15073, 15220, 15132, 13295, 12649, 14833, 15290, 14529, 14928,
      14673, 10990, 15264, 13757, 15348, 12535, 15352, 13512, 14235, 13467, 13004, 14718, 12266, 15147, 12089, 15212,
      12633, 9407,  13341, 14493, 13965, 12290, 14469, 14347, 10795, 12491, 13422, 12961, 11271, 12188, 7702,  14638,
      13525, 14763, 13931, 14969, 13779, 15355, 15293, 13293, 14596, 13701, 14743, 14114, 12727, 15356, 13384, 13400,
      11425, 14637, 15204, 14069, 14601, 14284, 14318, 15218, 14593, 13848, 12386, 14383, 14984, 15023, 14789, 9815,
      13112, 12530, 14455, 6585,  12126, 12924, 14362, 12350, 14929, 14682, 11764, 13558, 14482, 13514, 14909, 14251,
      13516, 14804, 14590, 13131, 14277, 15230, 12273, 14174, 14092, 7191,  15334, 13366, 13063, 13558, 11698, 13370,
      13232, 15341, 14433, 12946, 14515, 13471, 14811, 10169, 15246, 14771, 13080, 14745, 15139, 11827, 13389, 14737,
      11946, 13765, 13293, 15173, 15060, 13711, 13223, 13333, 15114, 14354, 14883, 13930, 14367, 14330, 13429, 14241,
      14345, 12177, 13503, 14687, 14600, 13050, 12908, 11814, 14686, 14841, 13450, 15214, 15105, 14562, 14320, 13099,
  };

  TransArgs args{
      reinterpret_cast<uint8_t *>(data_4d), FORMAT_FRACTAL_Z, FORMAT_HWCN, {4, 1, 16, 16}, {2, 2, 16, 16}, DT_FLOAT16};
  TransResult result;

  FormatTransferFracZHwcn transfer;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(data));
  for (int i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<uint16_t *>(result.data.get()))[i], data[i]);
  }
  Status status =
      transfer.TransShape(args.src_format, args.src_shape, args.src_data_type, args.dst_format, args.dst_shape);
  EXPECT_EQ(status, UNSUPPORTED);
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_fp16_success_gt_cube) {
  uint16_t data_4d[8 * 2 * 16 * 16] = {
      14689, 14783, 12157, 13663, 15025, 14257, 14996, 13713, 13589, 13602, 14197, 14027, 15094, 14944, 11478, 13782,
      15209, 13106, 14608, 14397, 14859, 11337, 10505, 13485, 14446, 12817, 15224, 15077, 12943, 15008, 15282, 14380,
      13504, 12994, 9789,  15178, 13351, 13583, 10664, 14524, 13859, 11265, 11401, 12523, 13353, 14540, 11907, 15192,
      14693, 13383, 13882, 15187, 15256, 15357, 14759, 13647, 14364, 14377, 13344, 13686, 14571, 13798, 13158, 12056,
      11969, 14193, 12967, 13634, 10244, 15185, 13743, 12621, 14423, 15292, 15325, 14784, 14041, 15272, 13629, 15252,
      13435, 15113, 12388, 13524, 14783, 13525, 15191, 13639, 9632,  11262, 12830, 13326, 13442, 11949, 14165, 13539,
      14972, 15165, 11833, 14778, 13295, 14617, 14238, 14715, 13940, 13728, 12434, 14304, 13130, 13798, 11861, 14667,
      14765, 13988, 14243, 14286, 14973, 15329, 14026, 12162, 12730, 14433, 14102, 14444, 15272, 14870, 14910, 10260,
      11779, 14083, 13641, 12013, 15349, 12572, 14445, 14151, 14235, 15180, 15341, 13953, 14738, 14943, 13985, 14382,
      12363, 7861,  14778, 15304, 13954, 14467, 12597, 14655, 11317, 14878, 13390, 13995, 12438, 15345, 13497, 13235,
      12079, 14488, 15295, 11342, 13032, 5182,  14545, 14817, 12049, 14873, 13940, 13374, 13842, 14016, 13842, 14368,
      15228, 14441, 15076, 13998, 13488, 10489, 15013, 15289, 10887, 14646, 15199, 14682, 10731, 15078, 14992, 13486,
      13760, 6560,  15112, 15286, 14412, 14509, 12793, 14910, 12597, 15171, 14770, 13926, 13911, 11273, 14547, 11730,
      14600, 13716, 15025, 14976, 13176, 11222, 13081, 12611, 14272, 15194, 13794, 15017, 15074, 15337, 13784, 13402,
      14718, 13102, 13839, 11883, 14794, 15042, 12703, 10509, 13033, 14516, 13079, 14549, 12656, 15046, 14507, 6337,
      15029, 11631, 15277, 15308, 12406, 11838, 14015, 14170, 14014, 15210, 12628, 12923, 15041, 15035, 14362, 13705,
      11145, 11327, 13769, 15254, 14763, 11372, 14844, 11086, 15090, 15285, 12687, 13542, 10442, 14508, 12400, 14874,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14538, 14282, 15116, 14874, 14001, 14122, 9771,  14751, 11277, 12285, 13154, 14633, 12130, 15264, 14130, 14016,
      15221, 15209, 14914, 13639, 13638, 15033, 11526, 13354, 15082, 14432, 10349, 13521, 14596, 14090, 14905, 13028,
      14625, 13631, 14854, 13574, 11604, 13841, 14481, 14842, 14987, 13801, 13996, 14229, 14667, 14102, 11421, 13424,
      14201, 12749, 12382, 15253, 13907, 13948, 15225, 13080, 13436, 13802, 14655, 14805, 13169, 15236, 12947, 14168,
      14472, 15054, 15065, 15057, 10218, 15134, 14810, 13595, 14186, 14482, 10693, 13913, 14020, 14844, 14521, 13427,
      14875, 13396, 14267, 14489, 14886, 14451, 14598, 10904, 13256, 14423, 13501, 15008, 12546, 13590, 14819, 14667,
      15010, 14873, 15295, 15293, 14217, 11956, 13442, 14544, 13505, 12319, 15287, 13706, 15263, 14513, 12802, 14306,
      12724, 12975, 15146, 13507, 14926, 13717, 15049, 7635,  13514, 14873, 15237, 14785, 12525, 12462, 13857, 15245,
      14795, 13545, 15239, 14158, 13571, 13996, 14229, 14996, 14550, 14406, 13410, 14201, 11326, 13706, 13960, 12486,
      14559, 13381, 12735, 13344, 15057, 14893, 13489, 12327, 9239,  15194, 15228, 14625, 14694, 15064, 14735, 14568,
      15081, 12371, 14795, 15175, 14914, 13614, 14816, 13632, 15119, 13492, 14925, 14152, 15001, 14911, 14789, 13469,
      13826, 15332, 12677, 13407, 13735, 12924, 12928, 14678, 14557, 14392, 15298, 14761, 14540, 14885, 15217, 15015,
      14449, 13850, 14327, 15180, 14851, 15323, 12525, 13690, 13208, 14954, 14369, 15066, 7842,  15280, 11926, 12176,
      4578,  14266, 14127, 15259, 14717, 15345, 15162, 14581, 15042, 14455, 14928, 14411, 13614, 14349, 14837, 13393,
      15248, 10384, 14728, 12498, 15134, 14855, 15086, 12432, 13813, 14639, 13357, 13350, 15128, 13675, 14953, 14374,
      14290, 15037, 14834, 14745, 8915,  8997,  14352, 14125, 15277, 13936, 14789, 13911, 9817,  14990, 15213, 15198,
      15173, 14793, 14624, 13795, 10258, 9738,  15269, 14056, 15036, 15038, 14257, 10306, 14543, 14420, 14739, 14723,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14404, 13903, 14861, 13767, 11706, 15073, 15332, 14884, 14041, 15089, 15264, 14604, 14775, 14004, 15040, 13680,
      15261, 15099, 14640, 11929, 13555, 15139, 12401, 14243, 11341, 15187, 15331, 13351, 13111, 14583, 15129, 15115,
      11846, 14398, 13483, 14420, 14770, 14211, 15053, 14135, 11703, 13373, 14610, 15092, 11562, 12700, 13820, 11822,
      14517, 13562, 14887, 14795, 13151, 13081, 13907, 15014, 14060, 14755, 15010, 14339, 14371, 15059, 15109, 14925,
      14277, 14836, 14077, 14644, 12741, 14994, 10634, 14887, 14912, 14047, 10874, 9192,  14557, 13932, 14520, 12248,
      10424, 13853, 11735, 14058, 14823, 14588, 8527,  13403, 8761,  13375, 14661, 8118,  14331, 14452, 9840,  13718,
      14998, 11612, 12513, 14873, 12387, 15043, 14968, 14873, 13681, 13298, 12917, 14587, 13898, 14378, 14965, 14794,
      13690, 12386, 14033, 14343, 15341, 14476, 15180, 14510, 14966, 13153, 14611, 14061, 15105, 12933, 14852, 13862,
      14379, 13261, 12776, 15139, 15341, 12338, 12951, 14245, 15220, 8655,  15105, 14551, 14923, 12605, 10939, 15240,
      14535, 15082, 13937, 14263, 14662, 11335, 14557, 14627, 12721, 11821, 10410, 14869, 11905, 15191, 12705, 13991,
      15316, 8461,  14541, 12343, 14026, 15342, 13706, 13813, 12940, 14729, 14805, 14114, 11007, 14809, 14796, 14505,
      14675, 14338, 13781, 15123, 13634, 13817, 14474, 12563, 13962, 14231, 14555, 13776, 13072, 14976, 15025, 13660,
      12770, 14716, 13835, 14656, 11412, 15269, 14852, 15018, 14907, 12634, 15036, 13968, 11077, 14628, 15085, 14860,
      14019, 11328, 15097, 14033, 15162, 12699, 14425, 14724, 15087, 15340, 15208, 14539, 13360, 14611, 13062, 15042,
      14306, 14333, 14353, 11266, 8071,  14850, 13740, 14648, 15193, 15262, 13316, 15147, 14906, 13780, 11802, 13601,
      14999, 14572, 15234, 12484, 13979, 14896, 13604, 12848, 15065, 14590, 14671, 15296, 12796, 14158, 14762, 14108,
      14438, 14954, 15140, 13301, 15047, 14484, 13129, 13233, 12740, 12925, 14603, 12690, 15230, 14835, 15025, 15157,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15244, 13923, 14036, 12650, 13151, 14358, 14418, 14649, 13759, 13583, 14366, 14333, 15290, 14090, 14877, 11805,
      15347, 12687, 14713, 11262, 14466, 12561, 14591, 11287, 15218, 12923, 9547,  13503, 13685, 15149, 14722, 12766,
      15080, 11477, 15240, 11105, 15116, 13938, 15248, 15048, 13502, 12737, 14423, 15172, 12866, 15063, 14649, 13609,
      13151, 14400, 14454, 10564, 12829, 14741, 12475, 13188, 12623, 14714, 15109, 11311, 14329, 15027, 15352, 11766,
      14862, 14838, 13591, 14771, 15148, 15319, 14934, 14553, 15300, 14594, 14928, 13354, 14194, 14839, 9871,  13245,
      14799, 15262, 15183, 12100, 12445, 3125,  14645, 15287, 14414, 13828, 14910, 14781, 11418, 14876, 14889, 14296,
      14237, 11439, 14438, 7727,  14569, 12594, 14299, 14382, 12642, 13932, 14627, 15343, 12534, 14728, 14931, 14993,
      15025, 12525, 13760, 14675, 13718, 14682, 14901, 12546, 15227, 14080, 12703, 14410, 12979, 12689, 14361, 13620,
      14862, 12453, 14462, 14686, 11993, 10744, 14365, 15321, 14990, 15308, 14759, 14074, 14676, 15143, 15270, 14820,
      10859, 15074, 13371, 13141, 14729, 15150, 12441, 14380, 12705, 14449, 14719, 14925, 12762, 10963, 14801, 14072,
      14767, 15360, 13355, 13524, 15006, 14452, 14435, 6080,  14181, 7887,  13760, 14661, 14912, 15202, 14133, 14390,
      14445, 14668, 13224, 13840, 14590, 15323, 11181, 15010, 15049, 11869, 14596, 12759, 14821, 14796, 11383, 15129,
      14960, 14945, 15352, 14960, 14754, 12929, 13633, 15243, 11711, 15118, 13557, 8992,  12517, 12865, 15354, 14531,
      11003, 13886, 15324, 15341, 14936, 14741, 13349, 13420, 14600, 11986, 12700, 13413, 14859, 14490, 13428, 14467,
      13052, 15308, 13948, 13719, 11020, 14385, 13578, 8279,  13489, 14762, 7461,  12408, 13733, 12134, 13639, 14065,
      14345, 13501, 11785, 14848, 14317, 10619, 13642, 14874, 13103, 13443, 13494, 13743, 11965, 12209, 15274, 13803,
      14892, 14450, 13195, 11389, 14760, 15325, 13028, 14510, 14139, 14554, 14373, 14505, 12719, 14130, 12819, 13330,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15331, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15222, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14902, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13480, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14853, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13271, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13814, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13968, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      8354,  0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14441, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15019, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14929, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14876, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15138, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15174, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13631, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14708, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15077, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14173, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      8900,  0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14916, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      12820, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14600, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13976, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15025, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      10182, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14616, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13423, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15099, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15279, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14491, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15006, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15087, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14737, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14143, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13354, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      9329,  0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14229, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13825, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14162, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15315, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15232, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15110, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      9797,  0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      10507, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15186, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13981, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14188, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14759, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13569, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      12389, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      11230, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14406, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14237, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14623, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15209, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      10557, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13728, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14452, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      12876, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14676, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      15335, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      13518, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14983, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14407, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      14262, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      12052, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      12803, 0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  };
  uint16_t data[2 * 2 * 17 * 17] = {
      14689, 15209, 13504, 14693, 11969, 13435, 14972, 14765, 11779, 12363, 12079, 15228, 13760, 14600, 14718, 15029,
      11145, 14783, 13106, 12994, 13383, 14193, 15113, 15165, 13988, 14083, 7861,  14488, 14441, 6560,  13716, 13102,
      11631, 11327, 12157, 14608, 9789,  13882, 12967, 12388, 11833, 14243, 13641, 14778, 15295, 15076, 15112, 15025,
      13839, 15277, 13769, 13663, 14397, 15178, 15187, 13634, 13524, 14778, 14286, 12013, 15304, 11342, 13998, 15286,
      14976, 11883, 15308, 15254, 15025, 14859, 13351, 15256, 10244, 14783, 13295, 14973, 15349, 13954, 13032, 13488,
      14412, 13176, 14794, 12406, 14763, 14257, 11337, 13583, 15357, 15185, 13525, 14617, 15329, 12572, 14467, 5182,
      10489, 14509, 11222, 15042, 11838, 11372, 14996, 10505, 10664, 14759, 13743, 15191, 14238, 14026, 14445, 12597,
      14545, 15013, 12793, 13081, 12703, 14015, 14844, 13713, 13485, 14524, 13647, 12621, 13639, 14715, 12162, 14151,
      14655, 14817, 15289, 14910, 12611, 10509, 14170, 11086, 13589, 14446, 13859, 14364, 14423, 9632,  13940, 12730,
      14235, 11317, 12049, 10887, 12597, 14272, 13033, 14014, 15090, 13602, 12817, 11265, 14377, 15292, 11262, 13728,
      14433, 15180, 14878, 14873, 14646, 15171, 15194, 14516, 15210, 15285, 14197, 15224, 11401, 13344, 15325, 12830,
      12434, 14102, 15341, 13390, 13940, 15199, 14770, 13794, 13079, 12628, 12687, 14027, 15077, 12523, 13686, 14784,
      13326, 14304, 14444, 13953, 13995, 13374, 14682, 13926, 15017, 14549, 12923, 13542, 15094, 12943, 13353, 14571,
      14041, 13442, 13130, 15272, 14738, 12438, 13842, 10731, 13911, 15074, 12656, 15041, 10442, 14944, 15008, 14540,
      13798, 15272, 11949, 13798, 14870, 14943, 15345, 14016, 15078, 11273, 15337, 15046, 15035, 14508, 11478, 15282,
      11907, 13158, 13629, 14165, 11861, 14910, 13985, 13497, 13842, 14992, 14547, 13784, 14507, 14362, 12400, 13782,
      14380, 15192, 12056, 15252, 13539, 14667, 10260, 14382, 13235, 14368, 13486, 11730, 13402, 6337,  13705, 14874,
      15331, 15222, 14902, 13480, 14853, 13271, 13814, 13968, 8354,  14441, 15019, 14929, 14876, 15138, 15174, 13631,
      14708, 14538, 15221, 14625, 14201, 14472, 14875, 15010, 12724, 14795, 14559, 15081, 13826, 14449, 4578,  15248,
      14290, 15173, 14282, 15209, 13631, 12749, 15054, 13396, 14873, 12975, 13545, 13381, 12371, 15332, 13850, 14266,
      10384, 15037, 14793, 15116, 14914, 14854, 12382, 15065, 14267, 15295, 15146, 15239, 12735, 14795, 12677, 14327,
      14127, 14728, 14834, 14624, 14874, 13639, 13574, 15253, 15057, 14489, 15293, 13507, 14158, 13344, 15175, 13407,
      15180, 15259, 12498, 14745, 13795, 14001, 13638, 11604, 13907, 10218, 14886, 14217, 14926, 13571, 15057, 14914,
      13735, 14851, 14717, 15134, 8915,  10258, 14122, 15033, 13841, 13948, 15134, 14451, 11956, 13717, 13996, 14893,
      13614, 12924, 15323, 15345, 14855, 8997,  9738,  9771,  11526, 14481, 15225, 14810, 14598, 13442, 15049, 14229,
      13489, 14816, 12928, 12525, 15162, 15086, 14352, 15269, 14751, 13354, 14842, 13080, 13595, 10904, 14544, 7635,
      14996, 12327, 13632, 14678, 13690, 14581, 12432, 14125, 14056, 11277, 15082, 14987, 13436, 14186, 13256, 13505,
      13514, 14550, 9239,  15119, 14557, 13208, 15042, 13813, 15277, 15036, 12285, 14432, 13801, 13802, 14482, 14423,
      12319, 14873, 14406, 15194, 13492, 14392, 14954, 14455, 14639, 13936, 15038, 13154, 10349, 13996, 14655, 10693,
      13501, 15287, 15237, 13410, 15228, 14925, 15298, 14369, 14928, 13357, 14789, 14257, 14633, 13521, 14229, 14805,
      13913, 15008, 13706, 14785, 14201, 14625, 14152, 14761, 15066, 14411, 13350, 13911, 10306, 12130, 14596, 14667,
      13169, 14020, 12546, 15263, 12525, 11326, 14694, 15001, 14540, 7842,  13614, 15128, 9817,  14543, 15264, 14090,
      14102, 15236, 14844, 13590, 14513, 12462, 13706, 15064, 14911, 14885, 15280, 14349, 13675, 14990, 14420, 14130,
      14905, 11421, 12947, 14521, 14819, 12802, 13857, 13960, 14735, 14789, 15217, 11926, 14837, 14953, 15213, 14739,
      14016, 13028, 13424, 14168, 13427, 14667, 14306, 15245, 12486, 14568, 13469, 15015, 12176, 13393, 14374, 15198,
      14723, 15077, 14173, 8900,  14916, 12820, 14600, 13976, 15025, 10182, 14616, 13423, 15099, 15279, 14491, 15006,
      15087, 14737, 14404, 15261, 11846, 14517, 14277, 10424, 14998, 13690, 14379, 14535, 15316, 14675, 12770, 14019,
      14306, 14999, 14438, 13903, 15099, 14398, 13562, 14836, 13853, 11612, 12386, 13261, 15082, 8461,  14338, 14716,
      11328, 14333, 14572, 14954, 14861, 14640, 13483, 14887, 14077, 11735, 12513, 14033, 12776, 13937, 14541, 13781,
      13835, 15097, 14353, 15234, 15140, 13767, 11929, 14420, 14795, 14644, 14058, 14873, 14343, 15139, 14263, 12343,
      15123, 14656, 14033, 11266, 12484, 13301, 11706, 13555, 14770, 13151, 12741, 14823, 12387, 15341, 15341, 14662,
      14026, 13634, 11412, 15162, 8071,  13979, 15047, 15073, 15139, 14211, 13081, 14994, 14588, 15043, 14476, 12338,
      11335, 15342, 13817, 15269, 12699, 14850, 14896, 14484, 15332, 12401, 15053, 13907, 10634, 8527,  14968, 15180,
      12951, 14557, 13706, 14474, 14852, 14425, 13740, 13604, 13129, 14884, 14243, 14135, 15014, 14887, 13403, 14873,
      14510, 14245, 14627, 13813, 12563, 15018, 14724, 14648, 12848, 13233, 14041, 11341, 11703, 14060, 14912, 8761,
      13681, 14966, 15220, 12721, 12940, 13962, 14907, 15087, 15193, 15065, 12740, 15089, 15187, 13373, 14755, 14047,
      13375, 13298, 13153, 8655,  11821, 14729, 14231, 12634, 15340, 15262, 14590, 12925, 15264, 15331, 14610, 15010,
      10874, 14661, 12917, 14611, 15105, 10410, 14805, 14555, 15036, 15208, 13316, 14671, 14603, 14604, 13351, 15092,
      14339, 9192,  8118,  14587, 14061, 14551, 14869, 14114, 13776, 13968, 14539, 15147, 15296, 12690, 14775, 13111,
      11562, 14371, 14557, 14331, 13898, 15105, 14923, 11905, 11007, 13072, 11077, 13360, 14906, 12796, 15230, 14004,
      14583, 12700, 15059, 13932, 14452, 14378, 12933, 12605, 15191, 14809, 14976, 14628, 14611, 13780, 14158, 14835,
      15040, 15129, 13820, 15109, 14520, 9840,  14965, 14852, 10939, 12705, 14796, 15025, 15085, 13062, 11802, 14762,
      15025, 13680, 15115, 11822, 14925, 12248, 13718, 14794, 13862, 15240, 13991, 14505, 13660, 14860, 15042, 13601,
      14108, 15157, 14143, 13354, 9329,  14229, 13825, 14162, 15315, 15232, 15110, 9797,  10507, 15186, 13981, 14188,
      14759, 13569, 12389, 15244, 15347, 15080, 13151, 14862, 14799, 14237, 15025, 14862, 10859, 14767, 14445, 14960,
      11003, 13052, 14345, 14892, 13923, 12687, 11477, 14400, 14838, 15262, 11439, 12525, 12453, 15074, 15360, 14668,
      14945, 13886, 15308, 13501, 14450, 14036, 14713, 15240, 14454, 13591, 15183, 14438, 13760, 14462, 13371, 13355,
      13224, 15352, 15324, 13948, 11785, 13195, 12650, 11262, 11105, 10564, 14771, 12100, 7727,  14675, 14686, 13141,
      13524, 13840, 14960, 15341, 13719, 14848, 11389, 13151, 14466, 15116, 12829, 15148, 12445, 14569, 13718, 11993,
      14729, 15006, 14590, 14754, 14936, 11020, 14317, 14760, 14358, 12561, 13938, 14741, 15319, 3125,  12594, 14682,
      10744, 15150, 14452, 15323, 12929, 14741, 14385, 10619, 15325, 14418, 14591, 15248, 12475, 14934, 14645, 14299,
      14901, 14365, 12441, 14435, 11181, 13633, 13349, 13578, 13642, 13028, 14649, 11287, 15048, 13188, 14553, 15287,
      14382, 12546, 15321, 14380, 6080,  15010, 15243, 13420, 8279,  14874, 14510, 13759, 15218, 13502, 12623, 15300,
      14414, 12642, 15227, 14990, 12705, 14181, 15049, 11711, 14600, 13489, 13103, 14139, 13583, 12923, 12737, 14714,
      14594, 13828, 13932, 14080, 15308, 14449, 7887,  11869, 15118, 11986, 14762, 13443, 14554, 14366, 9547,  14423,
      15109, 14928, 14910, 14627, 12703, 14759, 14719, 13760, 14596, 13557, 12700, 7461,  13494, 14373, 14333, 13503,
      15172, 11311, 13354, 14781, 15343, 14410, 14074, 14925, 14661, 12759, 8992,  13413, 12408, 13743, 14505, 15290,
      13685, 12866, 14329, 14194, 11418, 12534, 12979, 14676, 12762, 14912, 14821, 12517, 14859, 13733, 11965, 12719,
      14090, 15149, 15063, 15027, 14839, 14876, 14728, 12689, 15143, 10963, 15202, 14796, 12865, 14490, 12134, 12209,
      14130, 14877, 14722, 14649, 15352, 9871,  14889, 14931, 14361, 15270, 14801, 14133, 11383, 15354, 13428, 13639,
      15274, 12819, 11805, 12766, 13609, 11766, 13245, 14296, 14993, 13620, 14820, 14072, 14390, 15129, 14531, 14467,
      14065, 13803, 13330, 11230, 14406, 14237, 14623, 15209, 10557, 13728, 14452, 12876, 14676, 15335, 13518, 14983,
      14407, 14262, 12052, 12803,
  };

  TransArgs args{
      reinterpret_cast<uint8_t *>(data_4d), FORMAT_FRACTAL_Z, FORMAT_HWCN, {8, 2, 16, 16}, {2, 2, 17, 17}, DT_FLOAT16};
  TransResult result;

  FormatTransferFracZHwcn transfer;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(data));
  for (int i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<uint16_t *>(result.data.get()))[i], data[i]);
  }
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_fp32_success_lt_cube) {
  float data_4d[1 * 1 * 16 * 16] = {
      0.7735707016927454,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
  };
  float data[1 * 1 * 1 * 1] = {
      0.7735707016927454,
  };

  TransArgs args{
      reinterpret_cast<uint8_t *>(data_4d), FORMAT_FRACTAL_Z, FORMAT_HWCN, {1, 1, 16, 16}, {1, 1, 1, 1}, DT_FLOAT};
  TransResult result;

  FormatTransferFracZHwcn transfer;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(data));
  for (int i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<float *>(result.data.get()))[i], data[i]);
  }
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_fp32_success_eq_cube) {
  float data_4d[4 * 1 * 16 * 16] = {
      0.6831664612720662,    0.46807409193230387,  0.6844620901431121,    0.44734933345075634,   0.6589946419451493,
      0.45407279559796754,   0.8079953053990072,   0.7711440578240174,    0.2222480197158998,    0.2946079420692501,
      0.08262985158363112,   0.6551984526443926,   0.12350662771089382,   0.07529018039533752,   0.7104137297407095,
      0.7972267016544862,    0.6704100492257761,   0.38380538447623347,   0.20504291496685378,   0.8937458228458971,
      0.5953133421005451,    0.4024209042151684,   0.2708997526965613,    0.9947039772657421,    0.05191087431024033,
      0.527684234902843,     0.5822965426031946,   0.34051690161871384,   0.618964448418473,     0.7083129376138301,
      0.9430455365564758,    0.8428917434812192,   0.1100008024925273,    0.8658867150465022,    0.37785518796941187,
      0.0560682924999949,    0.8917013967072703,   0.29011820100715613,   0.841641605015567,     0.28710785229202607,
      0.5550365115148658,    0.899317020625125,    0.9469770833029874,    0.481722161169593,     0.35659645959724773,
      0.4753321858251086,    0.018165235960573067, 0.5901523502446024,    0.06782629901187387,   0.5846316383032825,
      0.3343937523173849,    0.516557711551506,    0.5927516352022604,    0.09425462440794818,   0.3842649634085703,
      0.42456237358629856,   0.20273646764485553,  0.12179285856927158,   0.3434820114860655,    0.5418600485584334,
      0.537288775668625,     0.6345679130390505,   0.6150793068687287,    0.16942428803365528,   0.011962277754646644,
      0.33383308483647145,   0.7229490738382419,   0.8723731071128644,    0.4562484024783662,    0.31296996922277387,
      0.3988577244476993,    0.7166828085794636,   0.9261781977899168,    0.7180806906192968,    0.3570445695122011,
      0.11624287490051621,   0.04304626670554146,  0.3568430078652245,    0.22391301646447914,   0.22682002973089832,
      0.01218595314175075,   0.554901867035217,    0.2134313172685377,    0.9956484063389531,    0.2961420578323939,
      0.21025993218922812,   0.03497098648361374,  0.8444663243772668,    0.02360231224920384,   0.6752210926078791,
      0.18555970633957697,   0.05634985529260572,  0.17545433876008154,   0.20734533736133154,   0.6476268799888912,
      0.4521612477872248,    0.34992521007432076,  0.9899336751886556,    0.02291890899604221,   0.9615364801116805,
      0.7837811830236121,    0.7375328865078891,   0.4505680465750297,    0.7978480168417859,    0.2066279104002401,
      0.09440474356926032,   0.3436308066695164,   0.6174168480342069,    0.12290174347647109,   0.33173796997985794,
      0.43112101816430504,   0.40304239503355177,  0.031929425925011135,  0.843148774421602,     0.43932783284222643,
      0.10429153549692427,   0.2669115094745256,   0.2501512958138894,    0.15875525021129788,   0.05380204382715681,
      0.7668998634194449,    0.29285471597450274,  0.8414998513397356,    0.008673589506358104,  0.7346896807722134,
      0.7683317364722542,    0.5349102121913144,   0.08391554522130873,   0.01747534679308327,   0.42657242063886225,
      0.3127446423322787,    0.9950170425256947,   0.5254215517249816,    0.45548344249057005,   0.29438124781919195,
      0.3431514950412976,    0.46159896792164,     0.2663182629571247,    0.14187222894379747,   0.03516199633720751,
      0.8871942666614756,    0.7883386536030593,   0.6954694188692718,    0.5149870428091292,    0.6935106138241113,
      0.6375971960455311,    0.3071082642145303,   0.45361717586917905,   0.42316905468276345,   0.5414478686661514,
      0.43314211633167776,   0.18402472219501342,  0.2952875335419224,    0.6863539467549075,    0.7896909379393948,
      0.6515549755281398,    0.09222274447852541,  0.7031577793063953,    0.6336940353910993,    0.5368054627466105,
      0.4048242728667739,    0.4780005481374817,   0.28667136829518425,   0.5501136320860092,    0.24405829809957202,
      0.3891135788358344,    0.848283969134549,    0.6896238704509293,    0.4906467181577798,    0.06369584024032915,
      0.6040586446248664,    0.48037417839972163,  0.19339964886791605,   0.4045444987172572,    0.27121319053675963,
      0.27422624363244774,   0.8807898332792651,   0.8429603983261464,    0.5250908186015898,    0.41429943016156967,
      0.8245389032113795,    0.05260608835007785,  0.9857231222727136,    0.43722621091188607,   0.15375510884645693,
      0.4958653433337298,    0.8300430827109714,   0.2071098335922219,    0.8563173170431349,    0.6582593541664329,
      0.3147633699411625,    0.5579354687623471,   0.37552051711003365,   0.6165825942348354,    0.055699679454250584,
      0.45314086306788737,   0.5828334501321621,   0.10560619781955471,   0.10175287058893512,   0.6806324103865506,
      0.06222750656276943,   0.7483015426806955,   0.23890864348090746,   0.1042878700523937,    0.8136578720368534,
      0.9040410601874307,    0.02624241542169059,  0.7932359546968593,    0.7944394689825284,    0.5321276778145092,
      0.0535571856697612,    0.9266505353414602,   0.7888192017690357,    0.0933256511080266,    0.5923909155484899,
      0.06805780980492815,   0.974417825179212,    0.41566199696641626,   0.48642427283294987,   0.10997939958993308,
      0.8429828847103998,    0.6260279433004406,   0.21491223899537837,   0.0504983090565575,    0.5425208877913553,
      0.5069119006322486,    0.678551795781891,    0.14011533201044424,   0.43278585657967816,   0.926593576262934,
      0.9702293073631606,    0.36018301931740304,  0.7931543445611511,    0.9404026082713018,    0.5463036464543467,
      0.17330678996166182,   0.7894006098150973,   0.442734368440455,     0.8981027042449529,    0.33497157875463235,
      0.5788717206660638,    0.986669415303064,    0.12806259068029724,   0.3279938067944209,    0.34756560511018186,
      0.9085775315386622,    0.4810608942027086,   0.7344984959546728,    0.08118053512401946,   0.12385988616582788,
      0.19373242493951304,   0.08095871969642188,  0.9001565264037388,    0.3588283237184189,    0.29536303816010245,
      0.8060034335764349,    0.46546383867107344,  0.7205892937122093,    0.025925230173998726,  0.5102876474425719,
      0.9197592030619824,    0.11333553766433013,  0.13886358508848384,   0.05643823802653081,   0.8226616539197039,
      0.9076379169526932,    0.8129624750328708,   0.4518451662674847,    0.22149088921320348,   0.8541020027122685,
      0.23318802256305826,   0.150063466262228,    0.814450981092272,     0.42312227098878497,   0.7013267301080973,
      0.42513846632876096,   0.6810194156003911,   0.3794681153385391,    0.34920332246724384,   0.38420512983502575,
      0.1525078295516621,    0.8090605987311331,   0.0193905398760037,    0.31996157111293577,   0.7922829336516499,
      0.46226143243492035,   0.6416293524794912,   0.8908665837266646,    0.2637275626853073,    0.8565214584341261,
      0.09724835107213159,   0.12295592223905671,  0.6323054179956534,    0.4759654290551254,    0.5619941553685122,
      0.8584563839072712,    0.2278756939300155,   0.7908206301991599,    0.5596737212791594,    0.10163359233318092,
      0.32976304303206283,   0.4670590666020392,   0.17554298026024773,   0.14240827362868846,   0.5034614767751614,
      0.794893343621075,     0.493481917833547,    0.9925824631695594,    0.6812892829063387,    0.7887908051078045,
      0.6106188172917685,    0.36632090169684395,  0.4400036570026227,    0.694934848977295,     0.2736956467267132,
      0.3993747238415968,    0.5884066975152941,   0.377732416633768,     0.26652656251072004,   0.06154436361479121,
      0.38243421602723326,   0.03741283704650877,  0.7719142177120245,    0.32654545113159816,   0.9811099286760184,
      0.40549583385019305,   0.8524557457758495,   0.54269330786462,      0.46531629198714,      0.3866394496126604,
      0.10902348291155928,   0.317460556630631,    0.5420053903087978,    0.37886498413688585,   0.43249107307395207,
      0.6569751230209416,    0.7507342081719128,   0.8673927700405522,    0.14771320822513423,   0.49125083349457255,
      0.3485655420225199,    0.08039429774533102,  0.7853285592704566,    0.45904421355532876,   0.020751099069649337,
      0.8809860202717111,    0.1117483917540818,   0.4022651174022852,    0.7840742107173263,    0.4621822083435302,
      0.19568628449811376,   0.920198564024848,    0.8047471610165974,    0.05809292818063094,   0.2909407249624676,
      0.9959738352958282,    0.808405726749241,    0.4988825048856117,    0.530080132504718,     0.5526298311529374,
      0.2407659161095752,    0.8964997582949811,   0.5367622534230377,    0.24723353671430526,   0.07103293249287579,
      0.09655940030600907,   0.7648122752472973,   0.010032358443275102,  0.5842326307910283,    0.777742793860481,
      0.75986430850467,      0.39473463341772097,  0.33415825689773015,   0.28625931855104614,   0.724555891803827,
      0.11640935897348226,   0.9250059573755629,   0.47536466030424107,   0.43992889231568155,   0.8513889913773053,
      0.8572119394581306,    0.37622646274683946,  0.40142738686603874,   0.012995801393796858,  0.7935336924086659,
      0.40563890672238834,   0.45466564739918536,  0.570849287281551,     0.22547374818094368,   0.32476277113745666,
      0.16935924210176234,   0.7396115806050879,   0.27737221116673494,   0.45507109078354513,   0.1846995471935421,
      0.5897312486952494,    0.5395726401976545,   0.7349955594555352,    0.40693340266579436,   0.11690371538489985,
      0.6079902004546779,    0.73771380405663,     0.10541819520665319,   0.026977686728101857,  0.4500187981233643,
      0.06474126489274601,   0.98761531692832,     0.09410821162123428,   0.33686296834615204,   0.26837316011632395,
      0.12729624843562048,   0.9433519670635382,   0.8707313735578062,    0.16079780642882713,   0.28429857709682227,
      0.5571251732839778,    0.5348694047790081,   0.6833195598884997,    0.15182871738993353,   0.491045171071926,
      0.29326496215358233,   0.49162045819706357,  0.6304841404403468,    0.07059592099413725,   0.4270449247566951,
      0.704714010708951,     0.5156429184165244,   0.705737670330288,     0.5715047898300967,    0.5661583143004812,
      0.5902161490364923,    0.3979903309706505,   0.4888094450313448,    0.26627701774793255,   0.48998657626108477,
      0.1554004362113669,    0.936004512466527,    0.11825433228258497,   0.12549561732281167,   0.7012030577838808,
      0.21436889983722973,   0.8699582487347918,   0.0192743915338478,    0.6625797270870113,    0.855336187908017,
      0.3754536075891237,    0.23405113906650388,  0.4192396615212136,    0.22127280436177366,   0.43164069610611944,
      0.1675513073887226,    0.13001517540034935,  0.42345926820248136,   0.8689876090935275,    0.07580867233524491,
      0.6776796046633388,    0.6704560487979574,   0.04473925731958006,   0.46163054855599905,   0.3900650788591161,
      0.8241054911600366,    0.9547114281792741,   0.056092304981274155,  0.8508601819697378,    0.48847793129215134,
      0.23180635419589213,   0.7348713872810098,   0.03678780892522715,   0.48024185650458984,   0.2680856225282512,
      0.12413177831862876,   0.9583478777724984,   0.5387699863266349,    0.16980871122153518,   0.5395003971944796,
      0.24004337638983342,   0.24786316910119555,  0.026233819587968332,  0.6996171147385536,    0.279604293162519,
      0.7889897218117005,    0.4784414591841616,   0.726571033219543,     0.5194933223935144,    0.5102932009299628,
      0.9717415537588983,    0.38287488582381835,  0.6999407132066563,    0.8127931321646774,    0.5275124422319207,
      0.13770686280221067,   0.7871890380955198,   0.47406589969297297,   0.9106454871097285,    0.00781691329115608,
      0.8950293014208512,    0.6523119271938245,   0.7226667621938894,    0.292174813070197,     0.9142077799335105,
      0.6551343366610451,    0.48180056169665797,  0.7040011936196882,    0.5086501980098859,    0.042503208992013986,
      0.8821281169320708,    0.8395700105317818,   0.38480406941859957,   0.5145990085613465,    0.23109838051074427,
      0.47085915459268524,   0.6392541863634652,   0.0011517350795945402, 0.4352514529217414,    0.3391838669145525,
      0.6974288480613592,    0.28322528648853385,  0.33208031793114734,   0.021060973453037035,  0.909582371173019,
      0.19463134219614753,   0.7781693131100709,   0.9365643543694223,    0.36457252683522756,   0.14941527683842093,
      0.4559443017244216,    0.3354620354653778,   0.4215935674188409,    0.3179828820733691,    0.6808184152525771,
      0.9775827838703164,    0.5751067756152548,   0.44886211693328903,   0.764238534300501,     0.6276312526017124,
      0.051834948496720656,  0.27004389295833675,  0.7029901104801899,    0.6278899666238881,    0.24278691454078338,
      0.36546325633284493,   0.9812980074238206,   0.44834020622301407,   0.14966162014933604,   0.7868719388708943,
      0.7065586095515894,    0.6364835932247739,   0.8264421581923695,    0.0035118223254034797, 0.6443681787183393,
      0.41067458217386676,   0.892389047362956,    0.29660097478905667,   0.4148792774498472,    0.9167695771391512,
      0.7621107615417726,    0.8628333420437356,   0.4706749812166604,    0.42395916668728717,   0.6871439339671128,
      0.16343019791595848,   0.8555600890910067,   0.18663880545899425,   0.7659119030802831,    0.0024571713622885127,
      0.12474601741306279,   0.17624502657490493,  0.07102168443181744,   0.2766138040829982,    0.70250560426075,
      0.9104989798750418,    0.11601224618291417,  0.9163050771088229,    0.2921218451649672,    0.9156480830306547,
      0.1260635770067572,    0.45284937850754714,  0.623127746212215,     0.43434315006170543,   0.5657931668646882,
      0.7648823870386725,    0.023867149366012086, 0.06309889991154916,   0.9420037583644638,    0.4937826265620643,
      0.14250597504899842,   0.3822802235503563,   0.5421376354869643,    0.5373297123213626,    0.33019397705840037,
      0.7070970521308528,    0.44663016285658497,  0.8608042708557483,    0.747760955239228,     0.9259911753589466,
      0.7822278423256982,    0.7210764104642025,   0.16707350078699712,   0.4757286389194296,    0.2875045651754615,
      0.2803191369257856,    0.5051855485918096,   0.24485897195744344,   0.14399027852311141,   0.4662949176984196,
      0.43489193254471825,   0.8331805112602307,   0.8313466700309183,    0.12136494753753657,   0.7231965027565961,
      0.9924878844025083,    0.808533876962095,    0.616556845043056,     0.038379037197397214,  0.23360888711220384,
      0.43286210942540415,   0.29356145513705545,  0.8868555851092578,    0.5940921036615089,    0.08472555325190867,
      0.9991923980972558,    0.3941053921380935,   0.9808635163437694,    0.17685203056882326,   0.19798316729300292,
      0.9526742194230162,    0.3856873300304975,   0.761629773068807,     0.5975318578336405,    0.47064284297450454,
      0.5275436273483901,    0.004751033126319526, 0.2720049656556979,    0.7411408944034059,    0.8451888247183171,
      0.39647310980996087,   0.2714703487234702,   0.7053853428678178,    0.7798825181178566,    0.27979140115483725,
      0.4141899501695743,    0.6643473929144047,   0.4803346887258785,    0.7869592887064103,    0.6208782186564221,
      0.06589826828656975,   0.46618942111551465,  0.9751736868358482,    0.2137674562471874,    0.57656914189662,
      0.03911968762741813,   0.8312531636073637,   0.2133084787107239,    0.8614874801300464,    0.8540106732789453,
      0.16622952991905793,   0.7118917475703413,   0.4954313852390353,    0.38787474702322755,   0.6446085650793983,
      0.6872004100798245,    0.17514420258469143,  0.8259781152662251,    0.26945596320651144,   0.5641334745297626,
      0.5606745080228348,    0.3307599402107675,   0.28117583723512807,   0.7379929284335528,    0.7456300751677036,
      0.3092126324432367,    0.34900299452977235,  0.8218969478205516,    0.14020555470061447,   0.4938456319074028,
      0.147703797288803,     0.17087811285859922,  0.8144254559841663,    0.48391169406642554,   0.3566778694735223,
      0.4652122740697997,    0.6761799412268091,   0.19766898733665061,   0.25563122791668114,   0.5748277086082783,
      0.617600425956734,     0.6262548164405474,   0.27037612729706706,   0.16535271213628477,   0.9472888972576935,
      0.9069136347688539,    0.15153092403338186,  0.29182221282307463,   0.9770461371713691,    0.4794895181659964,
      0.36861133501387167,   0.5527764007134675,   0.1356744427576113,    0.9052873135897423,    0.21421666418111796,
      0.7423918859901605,    0.43426111117080757,  0.40160624612048856,   0.713919830422035,     0.9058501544549272,
      0.8463815001810163,    0.18644481649281086,  0.4476560563653188,    0.4942428147993275,    0.381079777122051,
      0.220047268980334,     0.9809706016212754,   0.2771049132714265,    0.7477400509890159,    0.009918541286799809,
      0.10406917247312042,   0.2508639245179938,   0.4625791481571955,    0.28272129944647095,   0.18172893239062426,
      0.8437188991596719,    0.12014088192118189,  0.4396215411214064,    0.11879153339008564,   0.22660695439179968,
      0.17063556592155904,   0.3409459367181056,   0.05411876516404135,   0.8405051547703243,    0.09057923342992225,
      0.7828794366278582,    0.19865367646322263,  0.5869964513283881,    0.5652719533881609,    0.40483259940948424,
      0.2529773635219552,    0.9766799456588338,   0.2489315994112682,    0.036903591509810596,  0.8189861113024955,
      0.9170748964519404,    0.5102931342925842,   0.8296909764204485,    0.628604548871245,     0.9922349376500471,
      0.9603755134468333,    0.6839676923991466,   0.6167503396510216,    0.4675060134913003,    0.5175723647127469,
      0.09017342631334502,   0.45465076557776485,  0.8567399789576292,    0.3644482467677622,    0.7746037570681462,
      0.6575020735435918,    0.038718639734492744, 0.18822021734070737,   0.14171689374558305,   0.8821388976738747,
      0.2871856735550452,    0.24166612486805816,  0.31446232390877327,   0.8071819782936023,    0.32295183679656514,
      0.2686347182149137,    0.35413975002107856,  0.981199266871307,     0.10562689284011406,   0.30603152447000326,
      0.5688125740478548,    0.582767706006426,    0.8475163038855884,    0.9583135940309339,    0.25447979211694116,
      0.7197133644724168,    0.2696356893402736,   0.13742826030613675,   0.5404155070995436,    0.3378761975061685,
      0.18649116769634477,   0.9769467982418673,   0.3822258721388825,    0.49512574517741414,   0.05874681009041205,
      0.5164094633106974,    0.5174261983921327,   0.20993774248784414,   0.0023076194317925847, 0.43600250461129864,
      0.6658781626439674,    0.01252483392898629,  0.06819848778854909,   0.9700512147479452,    0.07699155770525956,
      0.3594024013470921,    0.2651796388826595,   0.5383156359262355,    0.617136759546696,     0.4343278373265286,
      0.5238057040715188,    0.44249065473043125,  0.8674355770611861,    0.9623252657198269,    0.9520731395173417,
      0.17225566614426924,   0.8160451706486238,   0.259692323124718,     0.4015736852642504,    0.7518319270504007,
      0.0031347298909260024, 0.04706957304444048,  0.8399826103171201,    0.8314931338503961,    0.6602858559189395,
      0.27331544209481184,   0.6693215409966775,   0.7588986683209246,    0.22818233479986216,   0.5899292800086123,
      0.6814191735363567,    0.014049664372590032, 0.5329943911422461,    0.9095428798401878,    0.6050458792626395,
      0.46343882793690616,   0.5676060591456907,   0.9110051463445652,    0.20152636139953495,   0.9737591946763959,
      0.583386157842853,     0.6022580717413262,   0.7449507594166878,    0.6845438556043444,    0.6765620708428703,
      0.7482079102220434,    0.09317226220309016,  0.28047904770696586,   0.06528309412938993,   0.6332579040841826,
      0.6990000524368737,    0.6571893331380114,   0.29236622278798463,   0.6697757773566023,    0.2662937875726342,
      0.0982538860561668,    0.7287839713639058,   0.3171535568464592,    0.011063131370617874,  0.6040478455499635,
      0.7622303773870567,    0.10707790453440946,  0.2375388719117737,    0.4852907979238138,    0.93357557715282,
      0.2745010968952273,    0.07248344456646405,  0.5973802075585944,    0.4965442982192305,    0.5521873153411291,
      0.4343712963398306,    0.7127225734661942,   0.0023092611850982214, 0.6563813829254826,    0.07691029522466009,
      0.5116904879280413,    0.22400011032606482,  0.7235608133931579,    0.6137472473092337,    0.8656980825419603,
      0.07711735430740096,   0.39099296558300245,  0.5796161795730663,    0.8370908606922681,    0.1537414279185617,
      0.3081203425517297,    0.5426627874981451,   0.4102282338438321,    0.2115074984972014,    0.38423989072855613,
      0.4934963691876564,    0.8898006701959784,   0.0020026786914055794, 0.6624110868318063,    0.05603948420954197,
      0.22422042503104178,   0.771909773905311,    0.5068158178625776,    0.6770516665696477,    0.6116620002796381,
      0.7586660213684354,    0.2733861671206076,   0.5933021353506663,    0.40756763501282034,   0.7319840379060449,
      0.36401778528445394,   0.39957079625047065,  0.7399712679852177,    0.8997372794861339,    0.008223235280982344,
      0.15488052909951278,   0.5101878953761034,   0.5990007053028108,    0.7838294980264872,    0.6639559101930096,
      0.9843797936868443,    0.03810999309518304,  0.6850769508040535,    0.41247626245057356,   0.05904018343949069,
      0.8688083036380179,    0.46384003598712475,  0.2540779469158905,    0.2336662188944475,    0.6862110148169684,
      0.03107169521257047,   0.66191467125411,     0.26237569141698025,   0.8635178174057434,    0.25596259039679425,
      0.04455216237864856,   0.8195300753708519,   0.704808857028874,     0.8519580131779299,    0.4272465292038824,
      0.852044036967288,     0.7388641307494216,   0.7534985606386517,    0.39846011104236867,   0.7388394895852001,
      0.6459391314681788,    0.640260664909671,    0.5111460586748117,    0.80443448939929,      0.42719889494650143,
      0.37982798514793914,   0.7790515150101655,   0.1426225105392278,    0.7573338301154167,    0.8238299352115052,
      0.2516629563087275,    0.47670319089362045,  0.8768104265717728,    0.6813174782132152,    0.36538436401335717,
      0.9538984147659229,    0.33895553956798596,  0.5042328480905443,    0.35888628786369703,   0.5696183464330247,
      0.826581992069732,     0.6712396401944386,   0.9509250432331467,    0.2514001644292745,    0.04628408349794133,
      0.44692487935732084,   0.5286987408008823,   0.18227867796825847,   0.2756670744092533,    0.5890085618833815,
      0.15361676424072057,   0.3112065842869294,   0.16172945211030598,   0.9577072093023093,    0.05125732646208947,
      0.005878771424188023,  0.9449442428947165,   0.7018453422389489,    0.15454991391401007,   0.5821480481063563,
      0.9078593647977083,    0.632878554207089,    0.0002496443870546594, 0.024594532234186506,  0.2180635337072514,
      0.5423671524932987,    0.6584820098951952,   0.7680927998881413,    0.2665259835637993,    0.3673595477453472,
      0.41151637359492077,   0.7294317133290991,   0.08634325268259369,   0.537550613453831,     0.3272511551932701,
      0.23951615810506843,   0.18854433867049736,  0.6554860518436072,    0.35432188934380204,   0.09660389753167853,
      0.29355884866525306,   0.6975982642757892,   0.37792729759190136,   0.6841746291087246,    0.12206175290131605,
      0.3702383556858654,    0.8928022055477935,   0.7169042496671583,    0.18378045974821677,   0.6003995894084154,
      0.7236686851446756,    0.8437574011780651,   0.20121382443408364,   0.34854507526650924,   0.35175573461559784,
      0.44949384517169155,   0.4741917424025329,   0.7729441143536179,    0.550204417695396,     0.8409788814852021,
      0.15312848002048507,   0.8616757892110115,   0.5966950825260615,    0.6754406021840288,    0.027021667330288657,
      0.8327295607228997,    0.6058217168383617,   0.9904431061326998,    0.1806575194352621,    0.3665641617585177,
      0.42527027826024877,   0.09384753816567692,  0.7751872225238126,    0.3825117200801388,
  };
  float data[2 * 2 * 16 * 16] = {
      0.6831664612720662,    0.6704100492257761,   0.1100008024925273,    0.06782629901187387,   0.011962277754646644,
      0.01218595314175075,   0.34992521007432076,  0.031929425925011135,  0.01747534679308327,   0.6935106138241113,
      0.4048242728667739,    0.8807898332792651,   0.37552051711003365,   0.7944394689825284,    0.5425208877913553,
      0.5788717206660638,    0.46807409193230387,  0.38380538447623347,   0.8658867150465022,    0.5846316383032825,
      0.33383308483647145,   0.554901867035217,    0.9899336751886556,    0.843148774421602,     0.42657242063886225,
      0.6375971960455311,    0.4780005481374817,   0.8429603983261464,    0.6165825942348354,    0.5321276778145092,
      0.5069119006322486,    0.986669415303064,    0.6844620901431121,    0.20504291496685378,   0.37785518796941187,
      0.3343937523173849,    0.7229490738382419,   0.2134313172685377,    0.02291890899604221,   0.43932783284222643,
      0.3127446423322787,    0.3071082642145303,   0.28667136829518425,   0.5250908186015898,    0.055699679454250584,
      0.0535571856697612,    0.678551795781891,    0.12806259068029724,   0.44734933345075634,   0.8937458228458971,
      0.0560682924999949,    0.516557711551506,    0.8723731071128644,    0.9956484063389531,    0.9615364801116805,
      0.10429153549692427,   0.9950170425256947,   0.45361717586917905,   0.5501136320860092,    0.41429943016156967,
      0.45314086306788737,   0.9266505353414602,   0.14011533201044424,   0.3279938067944209,    0.6589946419451493,
      0.5953133421005451,    0.8917013967072703,   0.5927516352022604,    0.4562484024783662,    0.2961420578323939,
      0.7837811830236121,    0.2669115094745256,   0.5254215517249816,    0.42316905468276345,   0.24405829809957202,
      0.8245389032113795,    0.5828334501321621,   0.7888192017690357,    0.43278585657967816,   0.34756560511018186,
      0.45407279559796754,   0.4024209042151684,   0.29011820100715613,   0.09425462440794818,   0.31296996922277387,
      0.21025993218922812,   0.7375328865078891,   0.2501512958138894,    0.45548344249057005,   0.5414478686661514,
      0.3891135788358344,    0.05260608835007785,  0.10560619781955471,   0.0933256511080266,    0.926593576262934,
      0.9085775315386622,    0.8079953053990072,   0.2708997526965613,    0.841641605015567,     0.3842649634085703,
      0.3988577244476993,    0.03497098648361374,  0.4505680465750297,    0.15875525021129788,   0.29438124781919195,
      0.43314211633167776,   0.848283969134549,    0.9857231222727136,    0.10175287058893512,   0.5923909155484899,
      0.9702293073631606,    0.4810608942027086,   0.7711440578240174,    0.9947039772657421,    0.28710785229202607,
      0.42456237358629856,   0.7166828085794636,   0.8444663243772668,    0.7978480168417859,    0.05380204382715681,
      0.3431514950412976,    0.18402472219501342,  0.6896238704509293,    0.43722621091188607,   0.6806324103865506,
      0.06805780980492815,   0.36018301931740304,  0.7344984959546728,    0.2222480197158998,    0.05191087431024033,
      0.5550365115148658,    0.20273646764485553,  0.9261781977899168,    0.02360231224920384,   0.2066279104002401,
      0.7668998634194449,    0.46159896792164,     0.2952875335419224,    0.4906467181577798,    0.15375510884645693,
      0.06222750656276943,   0.974417825179212,    0.7931543445611511,    0.08118053512401946,   0.2946079420692501,
      0.527684234902843,     0.899317020625125,    0.12179285856927158,   0.7180806906192968,    0.6752210926078791,
      0.09440474356926032,   0.29285471597450274,  0.2663182629571247,    0.6863539467549075,    0.06369584024032915,
      0.4958653433337298,    0.7483015426806955,   0.41566199696641626,   0.9404026082713018,    0.12385988616582788,
      0.08262985158363112,   0.5822965426031946,   0.9469770833029874,    0.3434820114860655,    0.3570445695122011,
      0.18555970633957697,   0.3436308066695164,   0.8414998513397356,    0.14187222894379747,   0.7896909379393948,
      0.6040586446248664,    0.8300430827109714,   0.23890864348090746,   0.48642427283294987,   0.5463036464543467,
      0.19373242493951304,   0.6551984526443926,   0.34051690161871384,   0.481722161169593,     0.5418600485584334,
      0.11624287490051621,   0.05634985529260572,  0.6174168480342069,    0.008673589506358104,  0.03516199633720751,
      0.6515549755281398,    0.48037417839972163,  0.2071098335922219,    0.1042878700523937,    0.10997939958993308,
      0.17330678996166182,   0.08095871969642188,  0.12350662771089382,   0.618964448418473,     0.35659645959724773,
      0.537288775668625,     0.04304626670554146,  0.17545433876008154,   0.12290174347647109,   0.7346896807722134,
      0.8871942666614756,    0.09222274447852541,  0.19339964886791605,   0.8563173170431349,    0.8136578720368534,
      0.8429828847103998,    0.7894006098150973,   0.9001565264037388,    0.07529018039533752,   0.7083129376138301,
      0.4753321858251086,    0.6345679130390505,   0.3568430078652245,    0.20734533736133154,   0.33173796997985794,
      0.7683317364722542,    0.7883386536030593,   0.7031577793063953,    0.4045444987172572,    0.6582593541664329,
      0.9040410601874307,    0.6260279433004406,   0.442734368440455,     0.3588283237184189,    0.7104137297407095,
      0.9430455365564758,    0.018165235960573067, 0.6150793068687287,    0.22391301646447914,   0.6476268799888912,
      0.43112101816430504,   0.5349102121913144,   0.6954694188692718,    0.6336940353910993,    0.27121319053675963,
      0.3147633699411625,    0.02624241542169059,  0.21491223899537837,   0.8981027042449529,    0.29536303816010245,
      0.7972267016544862,    0.8428917434812192,   0.5901523502446024,    0.16942428803365528,   0.22682002973089832,
      0.4521612477872248,    0.40304239503355177,  0.08391554522130873,   0.5149870428091292,    0.5368054627466105,
      0.27422624363244774,   0.5579354687623471,   0.7932359546968593,    0.0504983090565575,    0.33497157875463235,
      0.8060034335764349,    0.46546383867107344,  0.814450981092272,     0.2637275626853073,    0.5034614767751614,
      0.38243421602723326,   0.7507342081719128,   0.8047471610165974,    0.5842326307910283,    0.7935336924086659,
      0.6079902004546779,    0.5348694047790081,   0.4888094450313448,    0.22127280436177366,   0.48847793129215134,
      0.7889897218117005,    0.6523119271938245,   0.7205892937122093,    0.42312227098878497,   0.8565214584341261,
      0.794893343621075,     0.03741283704650877,  0.8673927700405522,    0.05809292818063094,   0.777742793860481,
      0.40563890672238834,   0.73771380405663,     0.6833195598884997,    0.26627701774793255,   0.43164069610611944,
      0.23180635419589213,   0.4784414591841616,   0.7226667621938894,    0.025925230173998726,  0.7013267301080973,
      0.09724835107213159,   0.493481917833547,    0.7719142177120245,    0.14771320822513423,   0.2909407249624676,
      0.75986430850467,      0.45466564739918536,  0.10541819520665319,   0.15182871738993353,   0.48998657626108477,
      0.1675513073887226,    0.7348713872810098,   0.726571033219543,     0.292174813070197,     0.5102876474425719,
      0.42513846632876096,   0.12295592223905671,  0.9925824631695594,    0.32654545113159816,   0.49125083349457255,
      0.9959738352958282,    0.39473463341772097,  0.570849287281551,     0.026977686728101857,  0.491045171071926,
      0.1554004362113669,    0.13001517540034935,  0.03678780892522715,   0.5194933223935144,    0.9142077799335105,
      0.9197592030619824,    0.6810194156003911,   0.6323054179956534,    0.6812892829063387,    0.9811099286760184,
      0.3485655420225199,    0.808405726749241,    0.33415825689773015,   0.22547374818094368,   0.4500187981233643,
      0.29326496215358233,   0.936004512466527,    0.42345926820248136,   0.48024185650458984,   0.5102932009299628,
      0.6551343366610451,    0.11333553766433013,  0.3794681153385391,    0.4759654290551254,    0.7887908051078045,
      0.40549583385019305,   0.08039429774533102,  0.4988825048856117,    0.28625931855104614,   0.32476277113745666,
      0.06474126489274601,   0.49162045819706357,  0.11825433228258497,   0.8689876090935275,    0.2680856225282512,
      0.9717415537588983,    0.48180056169665797,  0.13886358508848384,   0.34920332246724384,   0.5619941553685122,
      0.6106188172917685,    0.8524557457758495,   0.7853285592704566,    0.530080132504718,     0.724555891803827,
      0.16935924210176234,   0.98761531692832,     0.6304841404403468,    0.12549561732281167,   0.07580867233524491,
      0.12413177831862876,   0.38287488582381835,  0.7040011936196882,    0.05643823802653081,   0.38420512983502575,
      0.8584563839072712,    0.36632090169684395,  0.54269330786462,      0.45904421355532876,   0.5526298311529374,
      0.11640935897348226,   0.7396115806050879,   0.09410821162123428,   0.07059592099413725,   0.7012030577838808,
      0.6776796046633388,    0.9583478777724984,   0.6999407132066563,    0.5086501980098859,    0.8226616539197039,
      0.1525078295516621,    0.2278756939300155,   0.4400036570026227,    0.46531629198714,      0.020751099069649337,
      0.2407659161095752,    0.9250059573755629,   0.27737221116673494,   0.33686296834615204,   0.4270449247566951,
      0.21436889983722973,   0.6704560487979574,   0.5387699863266349,    0.8127931321646774,    0.042503208992013986,
      0.9076379169526932,    0.8090605987311331,   0.7908206301991599,    0.694934848977295,     0.3866394496126604,
      0.8809860202717111,    0.8964997582949811,   0.47536466030424107,   0.45507109078354513,   0.26837316011632395,
      0.704714010708951,     0.8699582487347918,   0.04473925731958006,   0.16980871122153518,   0.5275124422319207,
      0.8821281169320708,    0.8129624750328708,   0.0193905398760037,    0.5596737212791594,    0.2736956467267132,
      0.10902348291155928,   0.1117483917540818,   0.5367622534230377,    0.43992889231568155,   0.1846995471935421,
      0.12729624843562048,   0.5156429184165244,   0.0192743915338478,    0.46163054855599905,   0.5395003971944796,
      0.13770686280221067,   0.8395700105317818,   0.4518451662674847,    0.31996157111293577,   0.10163359233318092,
      0.3993747238415968,    0.317460556630631,    0.4022651174022852,    0.24723353671430526,   0.8513889913773053,
      0.5897312486952494,    0.9433519670635382,   0.705737670330288,     0.6625797270870113,    0.3900650788591161,
      0.24004337638983342,   0.7871890380955198,   0.38480406941859957,   0.22149088921320348,   0.7922829336516499,
      0.32976304303206283,   0.5884066975152941,   0.5420053903087978,    0.7840742107173263,    0.07103293249287579,
      0.8572119394581306,    0.5395726401976545,   0.8707313735578062,    0.5715047898300967,    0.855336187908017,
      0.8241054911600366,    0.24786316910119555,  0.47406589969297297,   0.5145990085613465,    0.8541020027122685,
      0.46226143243492035,   0.4670590666020392,   0.377732416633768,     0.37886498413688585,   0.4621822083435302,
      0.09655940030600907,   0.37622646274683946,  0.7349955594555352,    0.16079780642882713,   0.5661583143004812,
      0.3754536075891237,    0.9547114281792741,   0.026233819587968332,  0.9106454871097285,    0.23109838051074427,
      0.23318802256305826,   0.6416293524794912,   0.17554298026024773,   0.26652656251072004,   0.43249107307395207,
      0.19568628449811376,   0.7648122752472973,   0.40142738686603874,   0.40693340266579436,   0.28429857709682227,
      0.5902161490364923,    0.23405113906650388,  0.056092304981274155,  0.6996171147385536,    0.00781691329115608,
      0.47085915459268524,   0.150063466262228,    0.8908665837266646,    0.14240827362868846,   0.06154436361479121,
      0.6569751230209416,    0.920198564024848,    0.010032358443275102,  0.012995801393796858,  0.11690371538489985,
      0.5571251732839778,    0.3979903309706505,   0.4192396615212136,    0.8508601819697378,    0.279604293162519,
      0.8950293014208512,    0.6392541863634652,   0.0011517350795945402, 0.3179828820733691,    0.7868719388708943,
      0.16343019791595848,   0.45284937850754714,  0.8608042708557483,    0.12136494753753657,   0.19798316729300292,
      0.4141899501695743,    0.7118917475703413,   0.8218969478205516,    0.16535271213628477,   0.9058501544549272,
      0.8437188991596719,    0.9766799456588338,   0.8567399789576292,    0.4352514529217414,    0.6808184152525771,
      0.7065586095515894,    0.8555600890910067,   0.623127746212215,     0.747760955239228,     0.7231965027565961,
      0.9526742194230162,    0.6643473929144047,   0.4954313852390353,    0.14020555470061447,   0.9472888972576935,
      0.8463815001810163,    0.12014088192118189,  0.2489315994112682,    0.3644482467677622,    0.3391838669145525,
      0.9775827838703164,    0.6364835932247739,   0.18663880545899425,   0.43434315006170543,   0.9259911753589466,
      0.9924878844025083,    0.3856873300304975,   0.4803346887258785,    0.38787474702322755,   0.4938456319074028,
      0.9069136347688539,    0.18644481649281086,  0.4396215411214064,    0.036903591509810596,  0.7746037570681462,
      0.6974288480613592,    0.5751067756152548,   0.8264421581923695,    0.7659119030802831,    0.5657931668646882,
      0.7822278423256982,    0.808533876962095,    0.761629773068807,     0.7869592887064103,    0.6446085650793983,
      0.147703797288803,     0.15153092403338186,  0.4476560563653188,    0.11879153339008564,   0.8189861113024955,
      0.6575020735435918,    0.28322528648853385,  0.44886211693328903,   0.0035118223254034797, 0.0024571713622885127,
      0.7648823870386725,    0.7210764104642025,   0.616556845043056,     0.5975318578336405,    0.6208782186564221,
      0.6872004100798245,    0.17087811285859922,  0.29182221282307463,   0.4942428147993275,    0.22660695439179968,
      0.9170748964519404,    0.038718639734492744, 0.33208031793114734,   0.764238534300501,     0.6443681787183393,
      0.12474601741306279,   0.023867149366012086, 0.16707350078699712,   0.038379037197397214,  0.47064284297450454,
      0.06589826828656975,   0.17514420258469143,  0.8144254559841663,    0.9770461371713691,    0.381079777122051,
      0.17063556592155904,   0.5102931342925842,   0.18822021734070737,   0.021060973453037035,  0.6276312526017124,
      0.41067458217386676,   0.17624502657490493,  0.06309889991154916,   0.4757286389194296,    0.23360888711220384,
      0.5275436273483901,    0.46618942111551465,  0.8259781152662251,    0.48391169406642554,   0.4794895181659964,
      0.220047268980334,     0.3409459367181056,   0.8296909764204485,    0.14171689374558305,   0.909582371173019,
      0.051834948496720656,  0.892389047362956,    0.07102168443181744,   0.9420037583644638,    0.2875045651754615,
      0.43286210942540415,   0.004751033126319526, 0.9751736868358482,    0.26945596320651144,   0.3566778694735223,
      0.36861133501387167,   0.9809706016212754,   0.05411876516404135,   0.628604548871245,     0.8821388976738747,
      0.19463134219614753,   0.27004389295833675,  0.29660097478905667,   0.2766138040829982,    0.4937826265620643,
      0.2803191369257856,    0.29356145513705545,  0.2720049656556979,    0.2137674562471874,    0.5641334745297626,
      0.4652122740697997,    0.5527764007134675,   0.2771049132714265,    0.8405051547703243,    0.9922349376500471,
      0.2871856735550452,    0.7781693131100709,   0.7029901104801899,    0.4148792774498472,    0.70250560426075,
      0.14250597504899842,   0.5051855485918096,   0.8868555851092578,    0.7411408944034059,    0.57656914189662,
      0.5606745080228348,    0.6761799412268091,   0.1356744427576113,    0.7477400509890159,    0.09057923342992225,
      0.9603755134468333,    0.24166612486805816,  0.9365643543694223,    0.6278899666238881,    0.9167695771391512,
      0.9104989798750418,    0.3822802235503563,   0.24485897195744344,   0.5940921036615089,    0.8451888247183171,
      0.03911968762741813,   0.3307599402107675,   0.19766898733665061,   0.9052873135897423,    0.009918541286799809,
      0.7828794366278582,    0.6839676923991466,   0.31446232390877327,   0.36457252683522756,   0.24278691454078338,
      0.7621107615417726,    0.11601224618291417,  0.5421376354869643,    0.14399027852311141,   0.08472555325190867,
      0.39647310980996087,   0.8312531636073637,   0.28117583723512807,   0.25563122791668114,   0.21421666418111796,
      0.10406917247312042,   0.19865367646322263,  0.6167503396510216,    0.8071819782936023,    0.14941527683842093,
      0.36546325633284493,   0.8628333420437356,   0.9163050771088229,    0.5373297123213626,    0.4662949176984196,
      0.9991923980972558,    0.2714703487234702,   0.2133084787107239,    0.7379929284335528,    0.5748277086082783,
      0.7423918859901605,    0.2508639245179938,   0.5869964513283881,    0.4675060134913003,    0.32295183679656514,
      0.4559443017244216,    0.9812980074238206,   0.4706749812166604,    0.2921218451649672,    0.33019397705840037,
      0.43489193254471825,   0.3941053921380935,   0.7053853428678178,    0.8614874801300464,    0.7456300751677036,
      0.617600425956734,     0.43426111117080757,  0.4625791481571955,    0.5652719533881609,    0.5175723647127469,
      0.2686347182149137,    0.3354620354653778,   0.44834020622301407,   0.42395916668728717,   0.9156480830306547,
      0.7070970521308528,    0.8331805112602307,   0.9808635163437694,    0.7798825181178566,    0.8540106732789453,
      0.3092126324432367,    0.6262548164405474,   0.40160624612048856,   0.28272129944647095,   0.40483259940948424,
      0.09017342631334502,   0.35413975002107856,  0.4215935674188409,    0.14966162014933604,   0.6871439339671128,
      0.1260635770067572,    0.44663016285658497,  0.8313466700309183,    0.17685203056882326,   0.27979140115483725,
      0.16622952991905793,   0.34900299452977235,  0.27037612729706706,   0.713919830422035,     0.18172893239062426,
      0.2529773635219552,    0.45465076557776485,  0.981199266871307,     0.10562689284011406,   0.05874681009041205,
      0.5238057040715188,    0.6693215409966775,   0.7449507594166878,    0.011063131370617874,  0.07691029522466009,
      0.4934963691876564,    0.39957079625047065,  0.2540779469158905,    0.39846011104236867,   0.36538436401335717,
      0.15361676424072057,   0.6584820098951952,   0.37792729759190136,   0.550204417695396,     0.30603152447000326,
      0.5164094633106974,    0.44249065473043125,  0.7588986683209246,    0.6845438556043444,    0.6040478455499635,
      0.5116904879280413,    0.8898006701959784,   0.7399712679852177,    0.2336662188944475,    0.7388394895852001,
      0.9538984147659229,    0.3112065842869294,   0.7680927998881413,    0.6841746291087246,    0.8409788814852021,
      0.5688125740478548,    0.5174261983921327,   0.8674355770611861,    0.22818233479986216,   0.6765620708428703,
      0.7622303773870567,    0.22400011032606482,  0.0020026786914055794, 0.8997372794861339,    0.6862110148169684,
      0.6459391314681788,    0.33895553956798596,  0.16172945211030598,   0.2665259835637993,    0.12206175290131605,
      0.15312848002048507,   0.582767706006426,    0.20993774248784414,   0.9623252657198269,    0.5899292800086123,
      0.7482079102220434,    0.10707790453440946,  0.7235608133931579,    0.6624110868318063,    0.008223235280982344,
      0.03107169521257047,   0.640260664909671,    0.5042328480905443,    0.9577072093023093,    0.3673595477453472,
      0.3702383556858654,    0.8616757892110115,   0.8475163038855884,    0.0023076194317925847, 0.9520731395173417,
      0.6814191735363567,    0.09317226220309016,  0.2375388719117737,    0.6137472473092337,    0.05603948420954197,
      0.15488052909951278,   0.66191467125411,     0.5111460586748117,    0.35888628786369703,   0.05125732646208947,
      0.41151637359492077,   0.8928022055477935,   0.5966950825260615,    0.9583135940309339,    0.43600250461129864,
      0.17225566614426924,   0.014049664372590032, 0.28047904770696586,   0.4852907979238138,    0.8656980825419603,
      0.22422042503104178,   0.5101878953761034,   0.26237569141698025,   0.80443448939929,      0.5696183464330247,
      0.005878771424188023,  0.7294317133290991,   0.7169042496671583,    0.6754406021840288,    0.25447979211694116,
      0.6658781626439674,    0.8160451706486238,   0.5329943911422461,    0.06528309412938993,   0.93357557715282,
      0.07711735430740096,   0.771909773905311,    0.5990007053028108,    0.8635178174057434,    0.42719889494650143,
      0.826581992069732,     0.9449442428947165,   0.08634325268259369,   0.18378045974821677,   0.027021667330288657,
      0.7197133644724168,    0.01252483392898629,  0.259692323124718,     0.9095428798401878,    0.6332579040841826,
      0.2745010968952273,    0.39099296558300245,  0.5068158178625776,    0.7838294980264872,    0.25596259039679425,
      0.37982798514793914,   0.6712396401944386,   0.7018453422389489,    0.537550613453831,     0.6003995894084154,
      0.8327295607228997,    0.2696356893402736,   0.06819848778854909,   0.4015736852642504,    0.6050458792626395,
      0.6990000524368737,    0.07248344456646405,  0.5796161795730663,    0.6770516665696477,    0.6639559101930096,
      0.04455216237864856,   0.7790515150101655,   0.9509250432331467,    0.15454991391401007,   0.3272511551932701,
      0.7236686851446756,    0.6058217168383617,   0.13742826030613675,   0.9700512147479452,    0.7518319270504007,
      0.46343882793690616,   0.6571893331380114,   0.5973802075585944,    0.8370908606922681,    0.6116620002796381,
      0.9843797936868443,    0.8195300753708519,   0.1426225105392278,    0.2514001644292745,    0.5821480481063563,
      0.23951615810506843,   0.8437574011780651,   0.9904431061326998,    0.5404155070995436,    0.07699155770525956,
      0.0031347298909260024, 0.5676060591456907,   0.29236622278798463,   0.4965442982192305,    0.1537414279185617,
      0.7586660213684354,    0.03810999309518304,  0.704808857028874,     0.7573338301154167,    0.04628408349794133,
      0.9078593647977083,    0.18854433867049736,  0.20121382443408364,   0.1806575194352621,    0.3378761975061685,
      0.3594024013470921,    0.04706957304444048,  0.9110051463445652,    0.6697757773566023,    0.5521873153411291,
      0.3081203425517297,    0.2733861671206076,   0.6850769508040535,    0.8519580131779299,    0.8238299352115052,
      0.44692487935732084,   0.632878554207089,    0.6554860518436072,    0.34854507526650924,   0.3665641617585177,
      0.18649116769634477,   0.2651796388826595,   0.8399826103171201,    0.20152636139953495,   0.2662937875726342,
      0.4343712963398306,    0.5426627874981451,   0.5933021353506663,    0.41247626245057356,   0.4272465292038824,
      0.2516629563087275,    0.5286987408008823,   0.0002496443870546594, 0.35432188934380204,   0.35175573461559784,
      0.42527027826024877,   0.9769467982418673,   0.5383156359262355,    0.8314931338503961,    0.9737591946763959,
      0.0982538860561668,    0.7127225734661942,   0.4102282338438321,    0.40756763501282034,   0.05904018343949069,
      0.852044036967288,     0.47670319089362045,  0.18227867796825847,   0.024594532234186506,  0.09660389753167853,
      0.44949384517169155,   0.09384753816567692,  0.3822258721388825,    0.617136759546696,     0.6602858559189395,
      0.583386157842853,     0.7287839713639058,   0.0023092611850982214, 0.2115074984972014,    0.7319840379060449,
      0.8688083036380179,    0.7388641307494216,   0.8768104265717728,    0.2756670744092533,    0.2180635337072514,
      0.29355884866525306,   0.4741917424025329,   0.7751872225238126,    0.49512574517741414,   0.4343278373265286,
      0.27331544209481184,   0.6022580717413262,   0.3171535568464592,    0.6563813829254826,    0.38423989072855613,
      0.36401778528445394,   0.46384003598712475,  0.7534985606386517,    0.6813174782132152,    0.5890085618833815,
      0.5423671524932987,    0.6975982642757892,   0.7729441143536179,    0.3825117200801388,
  };

  TransArgs args{
      reinterpret_cast<uint8_t *>(data_4d), FORMAT_FRACTAL_Z, FORMAT_HWCN, {4, 1, 16, 16}, {2, 2, 16, 16}, DT_FLOAT};
  TransResult result;

  FormatTransferFracZHwcn transfer;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(data));
  for (int i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<float *>(result.data.get()))[i], data[i]);
  }
}

TEST_F(UtestFormatTransferFracZHwcn, fracz_to_hwcn_fp32_success_gt_cube) {
  float data_4d[8 * 2 * 16 * 16] = {
      0.5262470840946074,
      0.18562000104563015,
      0.5615369673938634,
      0.8587599751019871,
      0.5509884807270933,
      0.4014820342237435,
      0.7254703259240384,
      0.9221892139151201,
      0.9051123582670892,
      0.6318024147565033,
      0.27926503492559474,
      0.8492756730986297,
      0.5155877026309951,
      0.8045325552445173,
      0.174201977964776,
      0.5701019652356103,
      0.2599275570805496,
      0.5475276584465685,
      0.8049760798836795,
      0.6775131703780617,
      0.7617937037969288,
      0.47784809966988495,
      0.1989437316686401,
      0.31742454191999847,
      0.42181386769365103,
      0.6639389629436601,
      0.8686676471676089,
      0.22309451034455818,
      0.5211799202598583,
      0.1976179240322029,
      0.4939811012007336,
      0.41770317978608806,
      0.9853040510244775,
      0.09778460335243722,
      0.07684018109314716,
      0.6335452075218833,
      0.39168888702909943,
      0.7592483976125082,
      0.42637965326347016,
      0.9153832428923505,
      0.36904313835896374,
      0.07085538901262733,
      0.706538437689299,
      0.6788589266221415,
      0.025410373401994035,
      0.9663406916171869,
      0.7549932146581845,
      0.39059111438681227,
      0.7662270734030949,
      0.9369607968872835,
      0.836905044826716,
      0.06934671759319733,
      0.9881681709664655,
      0.806353074077933,
      0.2533875804046045,
      0.981068057585326,
      0.8900874340490004,
      0.889802896968625,
      0.9032637461433765,
      0.7476143557236724,
      0.4211218161868183,
      0.7313928694621235,
      0.9977056137259912,
      0.6235316600325075,
      0.530841434614198,
      0.3507058699739156,
      0.5708014024932662,
      0.3052844915173061,
      0.08674476352301563,
      0.9899624018687854,
      0.2841260136074859,
      0.051224583281113345,
      0.027358738238934976,
      0.03973713677188995,
      0.13261013546882394,
      0.8036940145332488,
      0.9556631725208989,
      0.6389017364085043,
      0.7826300377042417,
      0.1920886526285347,
      0.44626734531908463,
      0.36736233181384337,
      0.31658943655651617,
      0.16206123425822094,
      0.6013214250236357,
      0.8119977866990217,
      0.19554158383602693,
      0.1269243503058195,
      0.28551778681471607,
      0.8624172944156852,
      0.630982390896547,
      0.5150584517188221,
      0.898451762546253,
      0.15993269832272117,
      0.264293959730718,
      0.8837861921740301,
      0.3119271649617613,
      0.5470288990041243,
      0.25284498064012806,
      0.6309942568896834,
      0.38862251626596367,
      0.16790321800722863,
      0.2651072827146369,
      0.8471427057082983,
      0.9089180108604413,
      0.7391668948415816,
      0.9815538780528091,
      0.8074529608513048,
      0.5922343123206459,
      0.2881933320989839,
      0.6437064951687319,
      0.00244999543928337,
      0.6626855421687033,
      0.14280222685394472,
      0.6162999456081352,
      0.1468663503533323,
      0.8529965121334725,
      0.1978111472284153,
      0.5348799410677707,
      0.011886125274325088,
      0.10375139630325214,
      0.3154865236914467,
      0.11940648503190532,
      0.9219521205464487,
      0.42714348866071816,
      0.47918295431768,
      0.8028029041388223,
      0.9032023458460028,
      0.8752102914244295,
      0.6611616854266359,
      0.3803093435446827,
      0.6385030188827648,
      0.1353615951681887,
      0.30251437601177134,
      0.1483796925608314,
      0.35159318416873464,
      0.8915997500927774,
      0.303678071770221,
      0.3999637600541244,
      0.3123999460017278,
      0.5944175367864415,
      0.477825893004286,
      0.1143959237748291,
      0.5759571178613899,
      0.33084687222105125,
      0.9772473817588189,
      0.4481765323045367,
      0.43834356117895534,
      0.0521211814839041,
      0.9959859264509981,
      0.556498522203592,
      0.5401203817789871,
      0.6884504501624745,
      0.46149787037437584,
      0.4987208340668672,
      0.3260055497429517,
      0.8894971894751379,
      0.2999085208541824,
      0.4714671205220138,
      0.554781248162564,
      0.6531461176818982,
      0.6016776985132304,
      0.8489721823323437,
      0.8033939962925624,
      0.6100591466551525,
      0.15561202809244157,
      0.8570216966490248,
      0.04933408890510327,
      0.9428985656137959,
      0.8888712125662346,
      0.4460696278783418,
      0.042811137094394214,
      0.47756000468041915,
      0.4447815966411831,
      0.7415256538727033,
      0.5175571912577063,
      0.5459428512726848,
      0.430703741441283,
      0.6682760511716276,
      0.5249175028286187,
      0.21691499814951154,
      0.15230729594665604,
      0.809611471896218,
      0.7673952593308585,
      0.44091834777473504,
      0.18391016758687107,
      0.3090706970892756,
      0.4816380510206846,
      0.7610279070927591,
      0.8983282086951327,
      0.32481136297228796,
      0.05408771148868641,
      0.41268456318648417,
      0.9057607332635397,
      0.9989705556041563,
      0.4749202032027596,
      0.7092037993551189,
      0.529660792438232,
      0.7937955587055074,
      0.20212932501794834,
      0.28423816905534316,
      0.088265655192032,
      0.6588572308735293,
      0.9770898113470604,
      0.9511870017238692,
      0.7896856360130685,
      0.9579790122176625,
      0.027702827316338885,
      0.48174502997628343,
      0.55272674865965,
      0.2895276989780864,
      0.591794387856851,
      0.8461377506230634,
      0.019816952365595886,
      0.5416760712708776,
      0.6982028114825873,
      0.20128047489619438,
      0.6449865423234372,
      0.5849788271829304,
      0.5856503944043783,
      0.664750968203006,
      0.6859801602679525,
      0.6279271887461749,
      0.9025322959302119,
      0.7298232209177002,
      0.18511892014922127,
      0.8866868870526441,
      0.3849372094271225,
      0.30662066021542467,
      0.46579144492276736,
      0.7048016949513274,
      0.9670977496947673,
      0.5804499113140081,
      0.28784685447468095,
      0.054424369814474405,
      0.9912230663260104,
      0.1596593206175151,
      0.300616943079272,
      0.34437010406551705,
      0.5327961410085527,
      0.997023168187204,
      0.53451581075253,
      0.9983971734501372,
      0.06338609804492179,
      0.05077506229920048,
      0.9793760450641456,
      0.1596794108571158,
      0.6880104017436701,
      0.9414981905155704,
      0.267538173836512,
      0.5863833444906936,
      0.732536193840161,
      0.5167681922631239,
      0.27073135067757326,
      0.7977612357066789,
      0.9720933373941855,
      0.12333578898998188,
      0.7203386689061504,
      0.48210589435647444,
      0.0589251101400885,
      0.283961844422973,
      0.6480555870064912,
      0.9904271116015025,
      0.16730737556899755,
      0.3116581806526617,
      0.362512313135534,
      0.8288575816171124,
      0.13388772277018135,
      0.6894476027681907,
      0.45285366443683217,
      0.31371373738067987,
      0.17723311527819086,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7918682117509727,
      0.9611897727382896,
      0.04764154842922541,
      0.6359791414767878,
      0.9590555164457821,
      0.11632079446525156,
      0.05430567932876784,
      0.20665132910683937,
      0.8674524226969336,
      0.16866101140444134,
      0.20246253236279066,
      0.763565017073811,
      0.345089429452039,
      0.3460664692865518,
      0.48093210416987786,
      0.3644431089494301,
      0.25491368945321924,
      0.08098628401032482,
      0.34169536734404193,
      0.9718774298853685,
      0.9154182706335288,
      0.9062064954352042,
      0.5711512432074957,
      0.2564513917885336,
      0.5413848234939881,
      0.9713537390911877,
      0.500434682755821,
      0.514956672854547,
      0.42387498806569357,
      0.26206043781283317,
      0.6836396369695441,
      0.021097153792147383,
      0.6786050109290417,
      0.21451639840748682,
      0.17867782316557934,
      0.5301916140657921,
      0.04887411317718848,
      0.6874767491375144,
      0.34440312445911503,
      0.2203555055348826,
      0.9564545919115185,
      0.8143108696586439,
      0.043501889994028375,
      0.6412821290242677,
      0.553940474472896,
      0.8814523193341739,
      0.9386230279466492,
      0.6413668921501134,
      0.8477125241211667,
      0.5768977156844659,
      0.02509653619032559,
      0.600470723278435,
      0.13304323107759775,
      0.2258362439419268,
      0.12109588787627701,
      0.5778491195905766,
      0.4831985839345372,
      0.26621359640781606,
      0.5248138586045901,
      0.15133563665166538,
      0.7122946781750881,
      0.9196954749538162,
      0.02499106790133776,
      0.3107186380818101,
      0.8849321592347881,
      0.26513297341603714,
      0.7563252602059222,
      0.3047056693815837,
      0.5393661935414817,
      0.6794552085831682,
      0.5036956130457365,
      0.44199698196247816,
      0.3175796945764736,
      0.08215570422238005,
      0.41823960616201317,
      0.754620854174738,
      0.49778930944748756,
      0.013175970443288665,
      0.020922504745778947,
      0.003980535400756824,
      0.9267716104061233,
      0.7324561265662716,
      0.08315155168910016,
      0.01701205986875387,
      0.3407684898687162,
      0.4002532098706061,
      0.4143238858611441,
      0.9286489819890967,
      0.47310127132389546,
      0.13220260240206427,
      0.20923524191957044,
      0.9616288151903299,
      0.08787827317100672,
      0.9651538291433787,
      0.6623553583485186,
      0.469297808440877,
      0.7183148924993774,
      0.6113987795131144,
      0.8599360432496744,
      0.3545446489011168,
      0.24796297355379537,
      0.6129527919109219,
      0.7545156467368622,
      0.16106749553848354,
      0.03129977774073123,
      0.03762079121167172,
      0.5746001932664768,
      0.48416383003273333,
      0.4116271712176073,
      0.9664622879357454,
      0.11335985397026105,
      0.18781138643845274,
      0.6788020686244602,
      0.97410981182431,
      0.006232202864729031,
      0.8903502367183758,
      0.6616846208040407,
      0.9181514938492773,
      0.8903238156374075,
      0.7289567024055328,
      0.09465791619238773,
      0.8809942300084808,
      0.3157636473721608,
      0.17626499659844597,
      0.03298376792526192,
      0.2547219272659277,
      0.156105149395114,
      0.9962229356813803,
      0.5311528841668889,
      0.28602537656896476,
      0.7970828784609515,
      0.6761119017648953,
      0.9920202949016083,
      0.8379077569584945,
      0.9237649345790961,
      0.7800275096211687,
      0.6487646791937893,
      0.3871595989095862,
      0.7504657703944658,
      0.19691548800582348,
      0.9077995672389654,
      0.07846151780675747,
      0.45865493017794867,
      0.9424117884794422,
      0.1093467426944017,
      0.082588601751441,
      0.524531268699229,
      0.668933677287048,
      0.15633491687065648,
      0.3670325266283059,
      0.5595352995199334,
      0.4602184718863326,
      0.004173349234257051,
      0.3522705354218415,
      0.00701735725790209,
      0.7105429002989472,
      0.9071076418105887,
      0.03449929613125302,
      0.7646711144904659,
      0.8790055264273281,
      0.611804778445946,
      0.4667126388636281,
      0.6613146415694391,
      0.5268301179582384,
      0.026261169320518363,
      0.5339699697866235,
      0.5018247103213517,
      0.8320790096886941,
      0.8860987348048975,
      0.14563040682141926,
      0.8817930001278131,
      0.8278691246165878,
      0.9987878921135839,
      0.11132378249497388,
      0.9497821106888364,
      0.3584038351896536,
      0.46525512153228654,
      0.8382315395128299,
      0.7461233724121545,
      0.9773425643718713,
      0.16633653783250157,
      0.052806185584314935,
      0.08791699089229132,
      0.8836683716945654,
      0.9289313672930872,
      0.973217088329034,
      0.771556223654079,
      0.10395315243238379,
      0.1544937655681795,
      0.7459123276004201,
      0.253649950983154,
      0.5865220856902467,
      0.7043630522166378,
      0.04933702607569013,
      0.4650602243220291,
      0.7807337230105253,
      0.4141931338432051,
      0.7987039854123447,
      0.4626691086984821,
      0.9131505890812511,
      0.9708329061611259,
      0.06342421633800865,
      0.5791031128679329,
      0.5582173499302838,
      0.25291732105237286,
      0.3116061877585733,
      0.8614576279397507,
      0.0767019478308203,
      0.44016047563477556,
      0.0005326172316258981,
      0.1784929253615195,
      0.3058007319157179,
      0.46844833009651166,
      0.5895726611280803,
      0.06678373419547612,
      0.7040449162909432,
      0.25717075199620165,
      0.6725005753375712,
      0.9557077641602835,
      0.9239316412606712,
      0.6645990918035876,
      0.12784746937617553,
      0.26399573580277913,
      0.4377855787782695,
      0.09121426936776944,
      0.5865353966441388,
      0.7668412602690984,
      0.2713475977837423,
      0.8679827200390235,
      0.11522134299953346,
      0.8976253770659826,
      0.8647007528629761,
      0.34192084390485955,
      0.8894506890532137,
      0.63919490915165,
      0.6054931809892881,
      0.47255437589764915,
      0.12253067262655448,
      0.26769500242894306,
      0.6007392726471552,
      0.8705469085182395,
      0.8620736373525405,
      0.9271678636205023,
      0.5544805715424246,
      0.38243534174482696,
      0.13421234322757603,
      0.052478391790792944,
      0.8146791198796317,
      0.4168823676588157,
      0.22129737642388003,
      0.8107995120994241,
      0.5901150707686857,
      0.4777615517705799,
      0.38903273975067665,
      0.10660146655633229,
      0.5539509687747731,
      0.17215698913489486,
      0.6306945280084336,
      0.7385021172863362,
      0.6015664973527335,
      0.9244808767432451,
      0.1657941846464276,
      0.8162929960857885,
      0.5023926042439503,
      0.4780097638691799,
      0.49357870687275085,
      0.8357730181411765,
      0.8515700237526853,
      0.004448282702601558,
      0.4566782228864755,
      0.8620968379208583,
      0.14823858663651712,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.4796467505964924,
      0.09103544362646132,
      0.9254689001478529,
      0.8000810110714159,
      0.05050480490924614,
      0.5267360009479215,
      0.3670167360070553,
      0.6579293314393269,
      0.35374182053158953,
      0.9798945307705291,
      0.7849211483431402,
      0.02428987467416799,
      0.3449537236772878,
      0.8912149326674362,
      0.6573943617231828,
      0.527839378558378,
      0.6903679291544869,
      0.6775107296333263,
      0.14779175118597787,
      0.9736194862266951,
      0.07188406888915577,
      0.4111679064023177,
      0.12650025225065376,
      0.52354628216733,
      0.8189300707822506,
      0.5698010276007985,
      0.5532788316792159,
      0.253357557252365,
      0.5728748980725252,
      0.6942557299464097,
      0.7044186941401308,
      0.4575541987011301,
      0.9400618464944154,
      0.10117982191354724,
      0.19696083132414388,
      0.5094291973347561,
      0.3636373390399269,
      0.13345061046806383,
      0.013845886991579959,
      0.4074209331005676,
      0.7714215773473824,
      0.5709760852241303,
      0.5868065461349722,
      0.8685667940719852,
      0.7209041850732071,
      0.2367984531926669,
      0.8154031716623844,
      0.9518430806804513,
      0.6174497372078122,
      0.07637851015892627,
      0.43579476640614967,
      0.8503495803323085,
      0.6482183809971421,
      0.7433371730802318,
      0.9443490362158871,
      0.6801247783621012,
      0.4860916942789072,
      0.7308547905086359,
      0.9696472233804034,
      0.32594628878515897,
      0.9921630819475203,
      0.8994861603528518,
      0.8603656823318697,
      0.5770391799057243,
      0.7591513267491136,
      0.9584463569118296,
      0.6134307586410246,
      0.6296221119340748,
      0.735266347418902,
      0.3119013329695528,
      0.14874596710326138,
      0.9282208421152665,
      0.7091568048853436,
      0.34579047562430887,
      0.7847637185773797,
      0.19931150694854305,
      0.07041934621086088,
      0.3568737629913865,
      0.06838422316937898,
      0.06116336748279105,
      0.29182113691713263,
      0.8881704417177094,
      0.6371115962253767,
      0.779165675792864,
      0.2609423421314738,
      0.029581058448018727,
      0.6073209693848843,
      0.36214013008585844,
      0.1033360965975485,
      0.4807162361096927,
      0.0006487337432082851,
      0.9017522677471346,
      0.5487237401878415,
      0.5793736927661238,
      0.9008211806019828,
      0.7725544638973622,
      0.40683809791301695,
      0.9911241870823463,
      0.6008861931407631,
      0.1870684081477867,
      0.001390312382257064,
      0.737060682804882,
      0.46388334782877216,
      0.37346697818658003,
      0.25692629387974253,
      0.9870663016043032,
      0.7975887097949725,
      0.40692604522463827,
      0.6369051078738235,
      0.8350551237810963,
      0.1538035934869676,
      0.10671648828459357,
      0.6855441241850057,
      0.3417072689174143,
      0.9835005351975031,
      0.28225150911101116,
      0.4867468616871172,
      0.04855763799354207,
      0.1098695842088494,
      0.13168747524145386,
      0.0063239982168763476,
      0.2630946287007021,
      0.5506417091731192,
      0.6902764075602817,
      0.9616603400642277,
      0.7592693855776683,
      0.039397303780642434,
      0.688541995884717,
      0.33627384815926264,
      0.22416462198856957,
      0.18211187854500788,
      0.6974968168258074,
      0.39362298364780024,
      0.6025135199348383,
      0.7219978807943509,
      0.5206552125072349,
      0.41399365541263755,
      0.8566536950947363,
      0.5582351457222449,
      0.6415261809393741,
      0.77549325800219,
      0.24982822569089858,
      0.44113929947515973,
      0.7107378206312127,
      0.7174843858993726,
      0.1835425354927137,
      0.7691578614285655,
      0.9627117835302494,
      0.17762270668038382,
      0.9322016562688125,
      0.14306445919007293,
      0.5056598810020343,
      0.6160528437592933,
      0.8186427731917715,
      0.9971410624826377,
      0.6071798192068825,
      0.16675314377923556,
      0.7721123612576728,
      0.3881273097877219,
      0.7313291731374914,
      0.4265957012941558,
      0.5678358270399689,
      0.9764530981527227,
      0.133492746039518,
      0.863293008208188,
      0.4732854692138253,
      0.4499116083864544,
      0.1270869099841716,
      0.9872683922874925,
      0.5448276967988157,
      0.8085286239910665,
      0.06807167107365653,
      0.04531123904698342,
      0.41130846764003626,
      0.45217981256195905,
      0.49500737451758503,
      0.09481108205452049,
      0.703301230417089,
      0.9275298163403998,
      0.30182501278118523,
      0.7608826601501297,
      0.6740131359666773,
      0.8793410938504569,
      0.2123848510847658,
      0.6701705548801383,
      0.42758276519556737,
      0.6511816867092731,
      0.5589656957444312,
      0.18241400468703362,
      0.11800518188559928,
      0.23245112466812745,
      0.33442635506669294,
      0.2206907485865991,
      0.36676192127614693,
      0.04439801298756285,
      0.6600144215196212,
      0.5318460079756204,
      0.6242678706062978,
      0.8501099959402697,
      0.3166843415770534,
      0.9866943323945742,
      0.1271784248683363,
      0.2337609565804203,
      0.9941213515971187,
      0.4219072337419115,
      0.40040064093676375,
      0.4988434763150812,
      0.6130125527795475,
      0.43836508334434177,
      0.42173628909953265,
      0.551017371163644,
      0.1968119456969003,
      0.5438157260240885,
      0.3196241929013254,
      0.7032342631302387,
      0.7509854732305814,
      0.8708226403361269,
      0.19588962063567117,
      0.5327356266169655,
      0.9022612012427644,
      0.6348708519190531,
      0.8096424198527009,
      0.41653427054689374,
      0.7691900499918106,
      0.03858693381829026,
      0.4300682786265866,
      0.7205889229919754,
      0.16380617828733002,
      0.769813510621498,
      0.029126233415790015,
      0.8007234290388204,
      0.7172873280713993,
      0.8865635181190356,
      0.3141150285693117,
      0.12120186066609784,
      0.9078437887038926,
      0.21719230415637303,
      0.1018441581467846,
      0.1034164351076462,
      0.7456351056689471,
      0.7149571552182608,
      0.14219662693688206,
      0.4842804471308868,
      0.8078383801034981,
      0.6583387212866237,
      0.5327422453923659,
      0.8248017025613454,
      0.27813867932753855,
      0.5645966730958535,
      0.6058861014253342,
      0.35297993714423737,
      0.63331261629013,
      0.8200569850384922,
      0.716327213866516,
      0.6497134763355603,
      0.3096907632260236,
      0.9373405756268672,
      0.8150029538555531,
      0.8805866651024098,
      0.6809539681627669,
      0.529136834340884,
      0.91457749551686,
      0.05284929495805646,
      0.5246414587679292,
      0.4141033527397324,
      0.06715003321072976,
      0.31646575772900487,
      0.06436568796081588,
      0.9022988974146449,
      0.2794888632765272,
      0.4377172334266779,
      0.26114230800062044,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7937225342067015,
      0.8471619893457908,
      0.382560187301876,
      0.049569157865243074,
      0.8083240090993435,
      0.43064622796152574,
      0.4400382572906255,
      0.3311939137649188,
      0.0625158359350092,
      0.4260791952020392,
      0.9688391237644197,
      0.5935914756673489,
      0.700652008671759,
      0.6009468709183672,
      0.1401191406929443,
      0.3893546805316366,
      0.6392629267080432,
      0.5942232265682109,
      0.3190534230287244,
      0.4905970487167317,
      0.19598627194813623,
      0.8547771895292302,
      0.11000661087563446,
      0.6246452113273748,
      0.39160036459673786,
      0.9635687246998184,
      0.9037991893107805,
      0.28944940732885804,
      0.6416750259188707,
      0.7410021886161868,
      0.4351739951164847,
      0.4604759643994246,
      0.4735878147669671,
      0.17081584343839806,
      0.55642212629952,
      0.9359363889293013,
      0.24011337538080146,
      0.5602994188130606,
      0.937966627900615,
      0.6815237923749249,
      0.43130097279022905,
      0.040576248270011606,
      0.5248760897670668,
      0.07143611768224323,
      0.739003452854678,
      0.696269191178893,
      0.4029047150659123,
      0.6527838205694618,
      0.8991559081336787,
      0.19626250900544784,
      0.4552609450593593,
      0.7657379455376203,
      0.375097519078059,
      0.6517484005602143,
      0.3482023897442358,
      0.3227991650920835,
      0.7595996642185282,
      0.4506662406445222,
      0.5805460564741822,
      0.970640600339885,
      0.9136311948354005,
      0.06868418937047505,
      0.6699294765915349,
      0.9292554265448705,
      0.7668004493627582,
      0.934304380974092,
      0.9273512496420965,
      0.2721534676723715,
      0.1318375396328999,
      0.31477582187626985,
      0.5608305618704201,
      0.5020648939439555,
      0.7051596280927722,
      0.5536870372663544,
      0.3509837109554569,
      0.04482234945829422,
      0.5502105249747118,
      0.33605904856179736,
      0.6573926282763929,
      0.3612392305962885,
      0.616605158291584,
      0.06340444724152905,
      0.34886696285669094,
      0.4764309946485116,
      0.4838760745556058,
      0.7565179897153195,
      0.567040908728685,
      0.23017428519331895,
      0.8078082635701143,
      0.27079559433796196,
      0.7301172602117544,
      0.4721967273155353,
      0.7580554296017025,
      0.15353543339760822,
      0.9164508003679109,
      0.06549665619801204,
      0.4189440850618942,
      0.9067731924701304,
      0.900530266743957,
      0.4537271021133793,
      0.9771787467311074,
      0.22565407587908615,
      0.6087511473257247,
      0.7641796940749915,
      0.9165594168049757,
      0.4529731827372153,
      0.14946012617105275,
      0.3023666280729985,
      0.07003818242446003,
      0.21699652767305433,
      0.4601016058547346,
      0.05544507896604156,
      0.21881213058804527,
      0.3635574756455685,
      0.9213723551697597,
      0.5229363131827134,
      0.5303858912662304,
      0.30404241435399293,
      0.2823783601265032,
      0.07829789350704186,
      0.45609692566641136,
      0.30394717751467293,
      0.5486040186666324,
      0.7292874312983759,
      0.39612552881451235,
      0.8905554735112293,
      0.9997214438162066,
      0.24623724982926498,
      0.15404736318394507,
      0.9585949210149967,
      0.5611380768799336,
      0.8565596193614202,
      0.30139303668464923,
      0.8803718916197911,
      0.7186502688876168,
      0.040973773653967926,
      0.3186458398987321,
      0.9417743345487153,
      0.5338975712422733,
      0.5351131006083096,
      0.48703692646781394,
      0.3998355695810606,
      0.9511835082140031,
      0.015068329553183823,
      0.9514719168931699,
      0.8896806595274409,
      0.1693984075782411,
      0.649436416272076,
      0.12993891116603073,
      0.4137964030742799,
      0.4198632568272431,
      0.94546991269337,
      0.9097533917281811,
      0.1595973054129839,
      0.44042026945061663,
      0.8820488003536908,
      0.5012908826773911,
      0.7362667515842057,
      0.23887605701823889,
      0.050919626909062043,
      0.8572388895279167,
      0.24230683806375908,
      0.9789876065987205,
      0.02577272568800959,
      0.04847260524386765,
      0.8790220739851453,
      0.8259888928683129,
      0.7876333393448203,
      0.534415606150436,
      0.524944603773529,
      0.6484483129128772,
      0.1959992842019812,
      0.2913253081495982,
      0.9812815339236836,
      0.9141244622742661,
      0.359039158748261,
      0.7695651684353306,
      0.42486391206575047,
      0.5990540756999841,
      0.9426749539934983,
      0.9010709535970589,
      0.4006967107899765,
      0.05965337112024971,
      0.2636616405004455,
      0.1630656009058158,
      0.6600573849870056,
      0.5982932509679235,
      0.4722945712586679,
      0.5683895822123131,
      0.42086188276413306,
      0.24465444867106156,
      0.9608194950832173,
      0.5200964904844124,
      0.5693783254589333,
      0.2948703269163482,
      0.6580250607035528,
      0.2066636969129345,
      0.7118073681091255,
      0.39804210128074613,
      0.9635766491233103,
      0.6092085952172871,
      0.7535188400072915,
      0.5024079324325041,
      0.16868421008162604,
      0.8238181390218491,
      0.4261354705753385,
      0.5389422916165942,
      0.1935051147588388,
      0.4641435536186225,
      0.5856389236236841,
      0.4054553126348215,
      0.6054538946034959,
      0.9695393749554523,
      0.9457957224013442,
      0.5763590906954813,
      0.14317888051290673,
      0.6613881656920997,
      0.13345728238389631,
      0.15934952832630112,
      0.939100968047668,
      0.8968600751556971,
      0.42908909714058385,
      0.1249239270120327,
      0.45554771240835235,
      0.03166344639403551,
      0.7391544336186706,
      0.8539578133878286,
      0.956548439779998,
      0.9130349746153508,
      0.7685272816303742,
      0.1421473448098215,
      0.7662780919434238,
      0.37561050141094254,
      0.4194083778307489,
      0.044677234299907,
      0.8066650727668283,
      0.6586789174328685,
      0.5966904035729225,
      0.6167832291917559,
      0.4551359427269517,
      0.3498043078989227,
      0.23984707278091588,
      0.7129570728658369,
      0.014037720747974713,
      0.3330714042912156,
      0.08774103421013557,
      0.3270588678120382,
      0.7787717251199148,
      0.20655533285441197,
      0.27327236506564223,
      0.5180437643536496,
      0.8428255880041005,
      0.3823116443736294,
      0.722291236125945,
      0.6444181146074366,
      0.9885862378989301,
      0.9857887951736034,
      0.6857869301950458,
      0.539156732806676,
      0.8953652205195822,
      0.6509836675522569,
      0.44046857608248824,
      0.8854425633754791,
      0.47614344327016855,
      0.42052902928145486,
      0.21739488894691872,
      0.06636511541523027,
      0.4162563664751737,
      0.801092747448573,
      0.2306325468658711,
      0.742728341300588,
      0.5085867099448891,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.5640187603293254,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.8159182286466172,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9689945218115408,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.023787420592958464,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.562112480129902,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.06362909341697354,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.17544861898792408,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.30293762582734984,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9450217161448506,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.24917343952483273,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7624941576787222,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.33204566137170677,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.326342732626145,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.8509648176357671,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.20725907729195658,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7784497985223777,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9653764160329492,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9934545025486349,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9573970946648828,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.568010974298202,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.8499024752990427,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.08265269165731448,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7337208488716614,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.09393092375466039,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.19708111012900464,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.6379106204223915,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.10374622622411978,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.39949025762970214,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.5461369552483832,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.6355007220053059,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.5808980500273655,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.6080856168865105,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9917314649792296,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7529081189940015,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.017252629974433442,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.10324581445230152,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.14560930585353093,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.91044107726182,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.3082826533242927,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7781267748623237,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.2614646975706304,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7182573197994735,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9344083597750972,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7302738535933991,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.5426671684224912,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.8728332634973097,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.30988741330774505,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.5421274741939771,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.25135035258940974,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.9806913272944415,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.2007751004710696,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7379813875076469,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.4595423552899529,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.3425280440560493,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7184009460589201,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.7937379190850589,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.40486160917649405,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.632494477827828,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.00043012606449288615,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.47308337689057733,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.5873125066010546,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.5642130408118529,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.05585449108260587,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0009067465907667271,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.4213200693458017,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.32810117888017454,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.03201803778046464,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.17672885224825907,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
      0.0,
  };
  float data[2 * 2 * 17 * 17] = {
      0.5262470840946074,   0.2599275570805496,     0.9853040510244775,   0.7662270734030949,    0.530841434614198,
      0.44626734531908463,  0.3119271649617613,     0.6626855421687033,   0.8752102914244295,    0.33084687222105125,
      0.6531461176818982,   0.5459428512726848,     0.41268456318648417,  0.48174502997628343,   0.7298232209177002,
      0.997023168187204,    0.12333578898998188,    0.18562000104563015,  0.5475276584465685,    0.09778460335243722,
      0.9369607968872835,   0.3507058699739156,     0.36736233181384337,  0.5470288990041243,    0.14280222685394472,
      0.6611616854266359,   0.9772473817588189,     0.6016776985132304,   0.430703741441283,     0.9057607332635397,
      0.55272674865965,     0.18511892014922127,    0.53451581075253,     0.7203386689061504,    0.5615369673938634,
      0.8049760798836795,   0.07684018109314716,    0.836905044826716,    0.5708014024932662,    0.31658943655651617,
      0.25284498064012806,  0.6162999456081352,     0.3803093435446827,   0.4481765323045367,    0.8489721823323437,
      0.6682760511716276,   0.9989705556041563,     0.2895276989780864,   0.8866868870526441,    0.9983971734501372,
      0.48210589435647444,  0.8587599751019871,     0.6775131703780617,   0.6335452075218833,    0.06934671759319733,
      0.3052844915173061,   0.16206123425822094,    0.6309942568896834,   0.1468663503533323,    0.6385030188827648,
      0.43834356117895534,  0.8033939962925624,     0.5249175028286187,   0.4749202032027596,    0.591794387856851,
      0.3849372094271225,   0.06338609804492179,    0.0589251101400885,   0.5509884807270933,    0.7617937037969288,
      0.39168888702909943,  0.9881681709664655,     0.08674476352301563,  0.6013214250236357,    0.38862251626596367,
      0.8529965121334725,   0.1353615951681887,     0.0521211814839041,   0.6100591466551525,    0.21691499814951154,
      0.7092037993551189,   0.8461377506230634,     0.30662066021542467,  0.05077506229920048,   0.283961844422973,
      0.4014820342237435,   0.47784809966988495,    0.7592483976125082,   0.806353074077933,     0.9899624018687854,
      0.8119977866990217,   0.16790321800722863,    0.1978111472284153,   0.30251437601177134,   0.9959859264509981,
      0.15561202809244157,  0.15230729594665604,    0.529660792438232,    0.019816952365595886,  0.46579144492276736,
      0.9793760450641456,   0.6480555870064912,     0.7254703259240384,   0.1989437316686401,    0.42637965326347016,
      0.2533875804046045,   0.2841260136074859,     0.19554158383602693,  0.2651072827146369,    0.5348799410677707,
      0.1483796925608314,   0.556498522203592,      0.8570216966490248,   0.809611471896218,     0.7937955587055074,
      0.5416760712708776,   0.7048016949513274,     0.1596794108571158,   0.9904271116015025,    0.9221892139151201,
      0.31742454191999847,  0.9153832428923505,     0.981068057585326,    0.051224583281113345,  0.1269243503058195,
      0.8471427057082983,   0.011886125274325088,   0.35159318416873464,  0.5401203817789871,    0.04933408890510327,
      0.7673952593308585,   0.20212932501794834,    0.6982028114825873,   0.9670977496947673,    0.6880104017436701,
      0.16730737556899755,  0.9051123582670892,     0.42181386769365103,  0.36904313835896374,   0.8900874340490004,
      0.027358738238934976, 0.28551778681471607,    0.9089180108604413,   0.10375139630325214,   0.8915997500927774,
      0.6884504501624745,   0.9428985656137959,     0.44091834777473504,  0.28423816905534316,   0.20128047489619438,
      0.5804499113140081,   0.9414981905155704,     0.3116581806526617,   0.6318024147565033,    0.6639389629436601,
      0.07085538901262733,  0.889802896968625,      0.03973713677188995,  0.8624172944156852,    0.7391668948415816,
      0.3154865236914467,   0.303678071770221,      0.46149787037437584,  0.8888712125662346,    0.18391016758687107,
      0.088265655192032,    0.6449865423234372,     0.28784685447468095,  0.267538173836512,     0.362512313135534,
      0.27926503492559474,  0.8686676471676089,     0.706538437689299,    0.9032637461433765,    0.13261013546882394,
      0.630982390896547,    0.9815538780528091,     0.11940648503190532,  0.3999637600541244,    0.4987208340668672,
      0.4460696278783418,   0.3090706970892756,     0.6588572308735293,   0.5849788271829304,    0.054424369814474405,
      0.5863833444906936,   0.8288575816171124,     0.8492756730986297,   0.22309451034455818,   0.6788589266221415,
      0.7476143557236724,   0.8036940145332488,     0.5150584517188221,   0.8074529608513048,    0.9219521205464487,
      0.3123999460017278,   0.3260055497429517,     0.042811137094394214, 0.4816380510206846,    0.9770898113470604,
      0.5856503944043783,   0.9912230663260104,     0.732536193840161,    0.13388772277018135,   0.5155877026309951,
      0.5211799202598583,   0.025410373401994035,   0.4211218161868183,   0.9556631725208989,    0.898451762546253,
      0.5922343123206459,   0.42714348866071816,    0.5944175367864415,   0.8894971894751379,    0.47756000468041915,
      0.7610279070927591,   0.9511870017238692,     0.664750968203006,    0.1596593206175151,    0.5167681922631239,
      0.6894476027681907,   0.8045325552445173,     0.1976179240322029,   0.9663406916171869,    0.7313928694621235,
      0.6389017364085043,   0.15993269832272117,    0.2881933320989839,   0.47918295431768,      0.477825893004286,
      0.2999085208541824,   0.4447815966411831,     0.8983282086951327,   0.7896856360130685,    0.6859801602679525,
      0.300616943079272,    0.27073135067757326,    0.45285366443683217,  0.174201977964776,     0.4939811012007336,
      0.7549932146581845,   0.9977056137259912,     0.7826300377042417,   0.264293959730718,     0.6437064951687319,
      0.8028029041388223,   0.1143959237748291,     0.4714671205220138,   0.7415256538727033,    0.32481136297228796,
      0.9579790122176625,   0.6279271887461749,     0.34437010406551705,  0.7977612357066789,    0.31371373738067987,
      0.5701019652356103,   0.41770317978608806,    0.39059111438681227,  0.6235316600325075,    0.1920886526285347,
      0.8837861921740301,   0.00244999543928337,    0.9032023458460028,   0.5759571178613899,    0.554781248162564,
      0.5175571912577063,   0.05408771148868641,    0.027702827316338885, 0.9025322959302119,    0.5327961410085527,
      0.9720933373941855,   0.17723311527819086,    0.5640187603293254,   0.8159182286466172,    0.9689945218115408,
      0.023787420592958464, 0.562112480129902,      0.06362909341697354,  0.17544861898792408,   0.30293762582734984,
      0.9450217161448506,   0.24917343952483273,    0.7624941576787222,   0.33204566137170677,   0.326342732626145,
      0.8509648176357671,   0.20725907729195658,    0.7784497985223777,   0.9653764160329492,    0.7918682117509727,
      0.25491368945321924,  0.6786050109290417,     0.8477125241211667,   0.8849321592347881,    0.9267716104061233,
      0.7183148924993774,   0.6788020686244602,     0.5311528841668889,   0.1093467426944017,    0.611804778445946,
      0.46525512153228654,  0.7043630522166378,     0.44016047563477556,  0.09121426936776944,   0.8705469085182395,
      0.17215698913489486,  0.9611897727382896,     0.08098628401032482,  0.21451639840748682,   0.5768977156844659,
      0.26513297341603714,  0.7324561265662716,     0.6113987795131144,   0.97410981182431,      0.28602537656896476,
      0.082588601751441,    0.4667126388636281,     0.8382315395128299,   0.04933702607569013,   0.0005326172316258981,
      0.5865353966441388,   0.8620736373525405,     0.6306945280084336,   0.04764154842922541,   0.34169536734404193,
      0.17867782316557934,  0.02509653619032559,    0.7563252602059222,   0.08315155168910016,   0.8599360432496744,
      0.006232202864729031, 0.7970828784609515,     0.524531268699229,    0.6613146415694391,    0.7461233724121545,
      0.4650602243220291,   0.1784929253615195,     0.7668412602690984,   0.9271678636205023,    0.7385021172863362,
      0.6359791414767878,   0.9718774298853685,     0.5301916140657921,   0.600470723278435,     0.3047056693815837,
      0.01701205986875387,  0.3545446489011168,     0.8903502367183758,   0.6761119017648953,    0.668933677287048,
      0.5268301179582384,   0.9773425643718713,     0.7807337230105253,   0.3058007319157179,    0.2713475977837423,
      0.5544805715424246,   0.6015664973527335,     0.9590555164457821,   0.9154182706335288,    0.04887411317718848,
      0.13304323107759775,  0.5393661935414817,     0.3407684898687162,   0.24796297355379537,   0.6616846208040407,
      0.9920202949016083,   0.15633491687065648,    0.026261169320518363, 0.16633653783250157,   0.4141931338432051,
      0.46844833009651166,  0.8679827200390235,     0.38243534174482696,  0.9244808767432451,    0.11632079446525156,
      0.9062064954352042,   0.6874767491375144,     0.2258362439419268,   0.6794552085831682,    0.4002532098706061,
      0.6129527919109219,   0.9181514938492773,     0.8379077569584945,   0.3670325266283059,    0.5339699697866235,
      0.052806185584314935, 0.7987039854123447,     0.5895726611280803,   0.11522134299953346,   0.13421234322757603,
      0.1657941846464276,   0.05430567932876784,    0.5711512432074957,   0.34440312445911503,   0.12109588787627701,
      0.5036956130457365,   0.4143238858611441,     0.7545156467368622,   0.8903238156374075,    0.9237649345790961,
      0.5595352995199334,   0.5018247103213517,     0.08791699089229132,  0.4626691086984821,    0.06678373419547612,
      0.8976253770659826,   0.052478391790792944,   0.8162929960857885,   0.20665132910683937,   0.2564513917885336,
      0.2203555055348826,   0.5778491195905766,     0.44199698196247816,  0.9286489819890967,    0.16106749553848354,
      0.7289567024055328,   0.7800275096211687,     0.4602184718863326,   0.8320790096886941,    0.8836683716945654,
      0.9131505890812511,   0.7040449162909432,     0.8647007528629761,   0.8146791198796317,    0.5023926042439503,
      0.8674524226969336,   0.5413848234939881,     0.9564545919115185,   0.4831985839345372,    0.3175796945764736,
      0.47310127132389546,  0.03129977774073123,    0.09465791619238773,  0.6487646791937893,    0.004173349234257051,
      0.8860987348048975,   0.9289313672930872,     0.9708329061611259,   0.25717075199620165,   0.34192084390485955,
      0.4168823676588157,   0.4780097638691799,     0.16866101140444134,  0.9713537390911877,    0.8143108696586439,
      0.26621359640781606,  0.08215570422238005,    0.13220260240206427,  0.03762079121167172,   0.8809942300084808,
      0.3871595989095862,   0.3522705354218415,     0.14563040682141926,  0.973217088329034,     0.06342421633800865,
      0.6725005753375712,   0.8894506890532137,     0.22129737642388003,  0.49357870687275085,   0.20246253236279066,
      0.500434682755821,    0.043501889994028375,   0.5248138586045901,   0.41823960616201317,   0.20923524191957044,
      0.5746001932664768,   0.3157636473721608,     0.7504657703944658,   0.00701735725790209,   0.8817930001278131,
      0.771556223654079,    0.5791031128679329,     0.9557077641602835,   0.63919490915165,      0.8107995120994241,
      0.8357730181411765,   0.763565017073811,      0.514956672854547,    0.6412821290242677,    0.15133563665166538,
      0.754620854174738,    0.9616288151903299,     0.48416383003273333,  0.17626499659844597,   0.19691548800582348,
      0.7105429002989472,   0.8278691246165878,     0.10395315243238379,  0.5582173499302838,    0.9239316412606712,
      0.6054931809892881,   0.5901150707686857,     0.8515700237526853,   0.345089429452039,     0.42387498806569357,
      0.553940474472896,    0.7122946781750881,     0.49778930944748756,  0.08787827317100672,   0.4116271712176073,
      0.03298376792526192,  0.9077995672389654,     0.9071076418105887,   0.9987878921135839,    0.1544937655681795,
      0.25291732105237286,  0.6645990918035876,     0.47255437589764915,  0.4777615517705799,    0.004448282702601558,
      0.3460664692865518,   0.26206043781283317,    0.8814523193341739,   0.9196954749538162,    0.013175970443288665,
      0.9651538291433787,   0.9664622879357454,     0.2547219272659277,   0.07846151780675747,   0.03449929613125302,
      0.11132378249497388,  0.7459123276004201,     0.3116061877585733,   0.12784746937617553,   0.12253067262655448,
      0.38903273975067665,  0.4566782228864755,     0.48093210416987786,  0.6836396369695441,    0.9386230279466492,
      0.02499106790133776,  0.020922504745778947,   0.6623553583485186,   0.11335985397026105,   0.156105149395114,
      0.45865493017794867,  0.7646711144904659,     0.9497821106888364,   0.253649950983154,     0.8614576279397507,
      0.26399573580277913,  0.26769500242894306,    0.10660146655633229,  0.8620968379208583,    0.3644431089494301,
      0.021097153792147383, 0.6413668921501134,     0.3107186380818101,   0.003980535400756824,  0.469297808440877,
      0.18781138643845274,  0.9962229356813803,     0.9424117884794422,   0.8790055264273281,    0.3584038351896536,
      0.5865220856902467,   0.0767019478308203,     0.4377855787782695,   0.6007392726471552,    0.5539509687747731,
      0.14823858663651712,  0.9934545025486349,     0.9573970946648828,   0.568010974298202,     0.8499024752990427,
      0.08265269165731448,  0.7337208488716614,     0.09393092375466039,  0.19708111012900464,   0.6379106204223915,
      0.10374622622411978,  0.39949025762970214,    0.5461369552483832,   0.6355007220053059,    0.5808980500273655,
      0.6080856168865105,   0.9917314649792296,     0.7529081189940015,   0.4796467505964924,    0.6903679291544869,
      0.9400618464944154,   0.6174497372078122,     0.7591513267491136,   0.29182113691713263,   0.40683809791301695,
      0.6855441241850057,   0.33627384815926264,    0.7174843858993726,   0.4265957012941558,    0.09481108205452049,
      0.2206907485865991,   0.43836508334434177,    0.03858693381829026,  0.7149571552182608,    0.9373405756268672,
      0.09103544362646132,  0.6775107296333263,     0.10117982191354724,  0.07637851015892627,   0.9584463569118296,
      0.8881704417177094,   0.9911241870823463,     0.3417072689174143,   0.22416462198856957,   0.1835425354927137,
      0.5678358270399689,   0.703301230417089,      0.36676192127614693,  0.42173628909953265,   0.4300682786265866,
      0.14219662693688206,  0.8150029538555531,     0.9254689001478529,   0.14779175118597787,   0.19696083132414388,
      0.43579476640614967,  0.6134307586410246,     0.6371115962253767,   0.6008861931407631,    0.9835005351975031,
      0.18211187854500788,  0.7691578614285655,     0.9764530981527227,   0.9275298163403998,    0.04439801298756285,
      0.551017371163644,    0.7205889229919754,     0.4842804471308868,   0.8805866651024098,    0.8000810110714159,
      0.9736194862266951,   0.5094291973347561,     0.8503495803323085,   0.6296221119340748,    0.779165675792864,
      0.1870684081477867,   0.28225150911101116,    0.6974968168258074,   0.9627117835302494,    0.133492746039518,
      0.30182501278118523,  0.6600144215196212,     0.1968119456969003,   0.16380617828733002,   0.8078383801034981,
      0.6809539681627669,   0.05050480490924614,    0.07188406888915577,  0.3636373390399269,    0.6482183809971421,
      0.735266347418902,    0.2609423421314738,     0.001390312382257064, 0.4867468616871172,    0.39362298364780024,
      0.17762270668038382,  0.863293008208188,      0.7608826601501297,   0.5318460079756204,    0.5438157260240885,
      0.769813510621498,    0.6583387212866237,     0.529136834340884,    0.5267360009479215,    0.4111679064023177,
      0.13345061046806383,  0.7433371730802318,     0.3119013329695528,   0.029581058448018727,  0.737060682804882,
      0.04855763799354207,  0.6025135199348383,     0.9322016562688125,   0.4732854692138253,    0.6740131359666773,
      0.6242678706062978,   0.3196241929013254,     0.029126233415790015, 0.5327422453923659,    0.91457749551686,
      0.3670167360070553,   0.12650025225065376,    0.013845886991579959, 0.9443490362158871,    0.14874596710326138,
      0.6073209693848843,   0.46388334782877216,    0.1098695842088494,   0.7219978807943509,    0.14306445919007293,
      0.4499116083864544,   0.8793410938504569,     0.8501099959402697,   0.7032342631302387,    0.8007234290388204,
      0.8248017025613454,   0.05284929495805646,    0.6579293314393269,   0.52354628216733,      0.4074209331005676,
      0.6801247783621012,   0.9282208421152665,     0.36214013008585844,  0.37346697818658003,   0.13168747524145386,
      0.5206552125072349,   0.5056598810020343,     0.1270869099841716,   0.2123848510847658,    0.3166843415770534,
      0.7509854732305814,   0.7172873280713993,     0.27813867932753855,  0.5246414587679292,    0.35374182053158953,
      0.8189300707822506,   0.7714215773473824,     0.4860916942789072,   0.7091568048853436,    0.1033360965975485,
      0.25692629387974253,  0.0063239982168763476,  0.41399365541263755,  0.6160528437592933,    0.9872683922874925,
      0.6701705548801383,   0.9866943323945742,     0.8708226403361269,   0.8865635181190356,    0.5645966730958535,
      0.4141033527397324,   0.9798945307705291,     0.5698010276007985,   0.5709760852241303,    0.7308547905086359,
      0.34579047562430887,  0.4807162361096927,     0.9870663016043032,   0.2630946287007021,    0.8566536950947363,
      0.8186427731917715,   0.5448276967988157,     0.42758276519556737,  0.1271784248683363,    0.19588962063567117,
      0.3141150285693117,   0.6058861014253342,     0.06715003321072976,  0.7849211483431402,    0.5532788316792159,
      0.5868065461349722,   0.9696472233804034,     0.7847637185773797,   0.0006487337432082851, 0.7975887097949725,
      0.5506417091731192,   0.5582351457222449,     0.9971410624826377,   0.8085286239910665,    0.6511816867092731,
      0.2337609565804203,   0.5327356266169655,     0.12120186066609784,  0.35297993714423737,   0.31646575772900487,
      0.02428987467416799,  0.253357557252365,      0.8685667940719852,   0.32594628878515897,   0.19931150694854305,
      0.9017522677471346,   0.40692604522463827,    0.6902764075602817,   0.6415261809393741,    0.6071798192068825,
      0.06807167107365653,  0.5589656957444312,     0.9941213515971187,   0.9022612012427644,    0.9078437887038926,
      0.63331261629013,     0.06436568796081588,    0.3449537236772878,   0.5728748980725252,    0.7209041850732071,
      0.9921630819475203,   0.07041934621086088,    0.5487237401878415,   0.6369051078738235,    0.9616603400642277,
      0.77549325800219,     0.16675314377923556,    0.04531123904698342,  0.18241400468703362,   0.4219072337419115,
      0.6348708519190531,   0.21719230415637303,    0.8200569850384922,   0.9022988974146449,    0.8912149326674362,
      0.6942557299464097,   0.2367984531926669,     0.8994861603528518,   0.3568737629913865,    0.5793736927661238,
      0.8350551237810963,   0.7592693855776683,     0.24982822569089858,  0.7721123612576728,    0.41130846764003626,
      0.11800518188559928,  0.40040064093676375,    0.8096424198527009,   0.1018441581467846,    0.716327213866516,
      0.2794888632765272,   0.6573943617231828,     0.7044186941401308,   0.8154031716623844,    0.8603656823318697,
      0.06838422316937898,  0.9008211806019828,     0.1538035934869676,   0.039397303780642434,  0.44113929947515973,
      0.3881273097877219,   0.45217981256195905,    0.23245112466812745,  0.4988434763150812,    0.41653427054689374,
      0.1034164351076462,   0.6497134763355603,     0.4377172334266779,   0.527839378558378,     0.4575541987011301,
      0.9518430806804513,   0.5770391799057243,     0.06116336748279105,  0.7725544638973622,    0.10671648828459357,
      0.688541995884717,    0.7107378206312127,     0.7313291731374914,   0.49500737451758503,   0.33442635506669294,
      0.6130125527795475,   0.7691900499918106,     0.7456351056689471,   0.3096907632260236,    0.26114230800062044,
      0.017252629974433442, 0.10324581445230152,    0.14560930585353093,  0.91044107726182,      0.3082826533242927,
      0.7781267748623237,   0.2614646975706304,     0.7182573197994735,   0.9344083597750972,    0.7302738535933991,
      0.5426671684224912,   0.8728332634973097,     0.30988741330774505,  0.5421274741939771,    0.25135035258940974,
      0.9806913272944415,   0.2007751004710696,     0.7937225342067015,   0.6392629267080432,    0.4735878147669671,
      0.8991559081336787,   0.7668004493627582,     0.616605158291584,    0.4189440850618942,    0.21881213058804527,
      0.15404736318394507,  0.9514719168931699,     0.8572388895279167,   0.7695651684353306,    0.5200964904844124,
      0.4641435536186225,   0.03166344639403551,    0.3498043078989227,   0.9857887951736034,    0.8471619893457908,
      0.5942232265682109,   0.17081584343839806,    0.19626250900544784,  0.934304380974092,     0.06340444724152905,
      0.9067731924701304,   0.3635574756455685,     0.9585949210149967,   0.8896806595274409,    0.24230683806375908,
      0.42486391206575047,  0.5693783254589333,     0.5856389236236841,   0.7391544336186706,    0.23984707278091588,
      0.6857869301950458,   0.382560187301876,      0.3190534230287244,   0.55642212629952,      0.4552609450593593,
      0.9273512496420965,   0.34886696285669094,    0.900530266743957,    0.9213723551697597,    0.5611380768799336,
      0.1693984075782411,   0.9789876065987205,     0.5990540756999841,   0.2948703269163482,    0.4054553126348215,
      0.8539578133878286,   0.7129570728658369,     0.539156732806676,    0.049569157865243074,  0.4905970487167317,
      0.9359363889293013,   0.7657379455376203,     0.2721534676723715,   0.4764309946485116,    0.4537271021133793,
      0.5229363131827134,   0.8565596193614202,     0.649436416272076,    0.02577272568800959,   0.9426749539934983,
      0.6580250607035528,   0.6054538946034959,     0.956548439779998,    0.014037720747974713,  0.8953652205195822,
      0.8083240090993435,   0.19598627194813623,    0.24011337538080146,  0.375097519078059,     0.1318375396328999,
      0.4838760745556058,   0.9771787467311074,     0.5303858912662304,   0.30139303668464923,   0.12993891116603073,
      0.04847260524386765,  0.9010709535970589,     0.2066636969129345,   0.9695393749554523,    0.9130349746153508,
      0.3330714042912156,   0.6509836675522569,     0.43064622796152574,  0.8547771895292302,    0.5602994188130606,
      0.6517484005602143,   0.31477582187626985,    0.7565179897153195,   0.22565407587908615,   0.30404241435399293,
      0.8803718916197911,   0.4137964030742799,     0.8790220739851453,   0.4006967107899765,    0.7118073681091255,
      0.9457957224013442,   0.7685272816303742,     0.08774103421013557,  0.44046857608248824,   0.4400382572906255,
      0.11000661087563446,  0.937966627900615,      0.3482023897442358,   0.5608305618704201,    0.567040908728685,
      0.6087511473257247,   0.2823783601265032,     0.7186502688876168,   0.4198632568272431,    0.8259888928683129,
      0.05965337112024971,  0.39804210128074613,    0.5763590906954813,   0.1421473448098215,    0.3270588678120382,
      0.8854425633754791,   0.3311939137649188,     0.6246452113273748,   0.6815237923749249,    0.3227991650920835,
      0.5020648939439555,   0.23017428519331895,    0.7641796940749915,   0.07829789350704186,   0.040973773653967926,
      0.94546991269337,     0.7876333393448203,     0.2636616405004455,   0.9635766491233103,    0.14317888051290673,
      0.7662780919434238,   0.7787717251199148,     0.47614344327016855,  0.0625158359350092,    0.39160036459673786,
      0.43130097279022905,  0.7595996642185282,     0.7051596280927722,   0.8078082635701143,    0.9165594168049757,
      0.45609692566641136,  0.3186458398987321,     0.9097533917281811,   0.534415606150436,     0.1630656009058158,
      0.6092085952172871,   0.6613881656920997,     0.37561050141094254,  0.20655533285441197,   0.42052902928145486,
      0.4260791952020392,   0.9635687246998184,     0.040576248270011606, 0.4506662406445222,    0.5536870372663544,
      0.27079559433796196,  0.4529731827372153,     0.30394717751467293,  0.9417743345487153,    0.1595973054129839,
      0.524944603773529,    0.6600573849870056,     0.7535188400072915,   0.13345728238389631,   0.4194083778307489,
      0.27327236506564223,  0.21739488894691872,    0.9688391237644197,   0.9037991893107805,    0.5248760897670668,
      0.5805460564741822,   0.3509837109554569,     0.7301172602117544,   0.14946012617105275,   0.5486040186666324,
      0.5338975712422733,   0.44042026945061663,    0.6484483129128772,   0.5982932509679235,    0.5024079324325041,
      0.15934952832630112,  0.044677234299907,      0.5180437643536496,   0.06636511541523027,   0.5935914756673489,
      0.28944940732885804,  0.07143611768224323,    0.970640600339885,    0.04482234945829422,   0.4721967273155353,
      0.3023666280729985,   0.7292874312983759,     0.5351131006083096,   0.8820488003536908,    0.1959992842019812,
      0.4722945712586679,   0.16868421008162604,    0.939100968047668,    0.8066650727668283,    0.8428255880041005,
      0.4162563664751737,   0.700652008671759,      0.6416750259188707,   0.739003452854678,     0.9136311948354005,
      0.5502105249747118,   0.7580554296017025,     0.07003818242446003,  0.39612552881451235,   0.48703692646781394,
      0.5012908826773911,   0.2913253081495982,     0.5683895822123131,   0.8238181390218491,    0.8968600751556971,
      0.6586789174328685,   0.3823116443736294,     0.801092747448573,    0.6009468709183672,    0.7410021886161868,
      0.696269191178893,    0.06868418937047505,    0.33605904856179736,  0.15353543339760822,   0.21699652767305433,
      0.8905554735112293,   0.3998355695810606,     0.7362667515842057,   0.9812815339236836,    0.42086188276413306,
      0.4261354705753385,   0.42908909714058385,    0.5966904035729225,   0.722291236125945,     0.2306325468658711,
      0.1401191406929443,   0.4351739951164847,     0.4029047150659123,   0.6699294765915349,    0.6573926282763929,
      0.9164508003679109,   0.4601016058547346,     0.9997214438162066,   0.9511835082140031,    0.23887605701823889,
      0.9141244622742661,   0.24465444867106156,    0.5389422916165942,   0.1249239270120327,    0.6167832291917559,
      0.6444181146074366,   0.742728341300588,      0.3893546805316366,   0.4604759643994246,    0.6527838205694618,
      0.9292554265448705,   0.3612392305962885,     0.06549665619801204,  0.05544507896604156,   0.24623724982926498,
      0.015068329553183823, 0.050919626909062043,   0.359039158748261,    0.9608194950832173,    0.1935051147588388,
      0.45554771240835235,  0.4551359427269517,     0.9885862378989301,   0.5085867099448891,    0.7379813875076469,
      0.4595423552899529,   0.3425280440560493,     0.7184009460589201,   0.7937379190850589,    0.40486160917649405,
      0.632494477827828,    0.00043012606449288615, 0.47308337689057733,  0.5873125066010546,    0.5642130408118529,
      0.05585449108260587,  0.0009067465907667271,  0.4213200693458017,   0.32810117888017454,   0.03201803778046464,
      0.17672885224825907,
  };

  TransArgs args{
      reinterpret_cast<uint8_t *>(data_4d), FORMAT_FRACTAL_Z, FORMAT_HWCN, {8, 2, 16, 16}, {2, 2, 17, 17}, DT_FLOAT};
  TransResult result;

  FormatTransferFracZHwcn transfer;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(data));
  for (int i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<float *>(result.data.get()))[i], data[i]);
  }
}

TEST_F(UtestFormatTransferFracZHwcn, uint8_1c_2n_padcn) {
  uint8_t ret[3 * 3 * 30 * 20] = {
      125, 165, 84,  250, 90,  201, 42,  35,  194, 76,  108, 1,   163, 194, 146, 247, 138, 181, 145, 159, 85,  36,  236,
      254, 208, 66,  249, 45,  64,  248, 69,  1,   16,  161, 132, 24,  2,   83,  105, 188, 69,  16,  222, 28,  216, 131,
      23,  103, 108, 233, 74,  151, 110, 194, 179, 67,  219, 178, 42,  220, 166, 204, 119, 208, 224, 81,  67,  189, 123,
      153, 63,  249, 140, 167, 75,  238, 162, 203, 244, 38,  119, 216, 11,  87,  236, 242, 23,  132, 11,  243, 69,  60,
      112, 190, 37,  37,  246, 160, 203, 76,  70,  242, 137, 18,  3,   147, 188, 146, 144, 119, 30,  48,  154, 150, 71,
      89,  7,   195, 59,  102, 157, 63,  45,  113, 219, 13,  231, 120, 243, 115, 26,  100, 12,  74,  10,  111, 17,  113,
      4,   242, 170, 244, 72,  149, 218, 238, 39,  95,  80,  123, 194, 191, 56,  85,  102, 120, 29,  134, 180, 35,  14,
      187, 134, 72,  109, 4,   237, 99,  146, 72,  46,  141, 138, 198, 190, 210, 222, 7,   105, 101, 11,  78,  212, 251,
      21,  97,  48,  90,  107, 103, 182, 247, 161, 151, 169, 97,  103, 106, 34,  220, 225, 56,  31,  16,  58,  83,  32,
      136, 251, 241, 194, 21,  38,  40,  118, 82,  72,  145, 222, 98,  215, 206, 64,  241, 51,  170, 122, 110, 178, 66,
      156, 61,  225, 193, 10,  80,  137, 51,  94,  49,  182, 35,  177, 158, 194, 194, 216, 0,   167, 114, 234, 59,  101,
      81,  176, 45,  20,  220, 26,  209, 243, 78,  53,  35,  158, 44,  14,  245, 215, 170, 1,   167, 120, 243, 169, 22,
      39,  74,  110, 20,  153, 88,  246, 190, 207, 65,  125, 97,  42,  109, 84,  46,  250, 175, 175, 235, 156, 230, 194,
      206, 117, 218, 64,  210, 249, 11,  110, 27,  92,  190, 34,  76,  48,  41,  32,  73,  19,  234, 30,  243, 91,  9,
      11,  6,   241, 12,  190, 77,  180, 181, 249, 55,  76,  39,  129, 50,  87,  70,  64,  241, 88,  46,  169, 60,  213,
      160, 42,  47,  174, 183, 58,  220, 234, 167, 107, 130, 91,  155, 67,  32,  206, 177, 229, 27,  30,  230, 110, 106,
      102, 251, 86,  74,  191, 44,  194, 28,  23,  95,  227, 89,  18,  106, 65,  172, 134, 136, 118, 4,   107, 84,  225,
      242, 28,  53,  108, 96,  21,  212, 240, 6,   118, 153, 90,  221, 122, 85,  18,  31,  4,   32,  74,  141, 242, 45,
      17,  104, 24,  199, 101, 114, 25,  204, 22,  148, 54,  248, 249, 221, 58,  2,   153, 184, 206, 244, 194, 5,   250,
      45,  98,  113, 5,   37,  222, 82,  199, 161, 106, 178, 251, 141, 214, 183, 4,   62,  36,  208, 34,  32,  86,  141,
      101, 71,  208, 213, 230, 212, 196, 211, 76,  27,  42,  20,  203, 153, 90,  51,  203, 224, 216, 209, 134, 136, 115,
      42,  62,  77,  91,  14,  139, 13,  75,  163, 1,   34,  196, 241, 225, 135, 189, 191, 166, 242, 63,  175, 180, 74,
      202, 79,  187, 2,   220, 136, 54,  24,  97,  204, 28,  89,  165, 167, 32,  96,  124, 244, 205, 108, 185, 6,   16,
      197, 140, 56,  188, 223, 179, 200, 31,  11,  92,  180, 103, 175, 143, 138, 200, 151, 67,  168, 140, 234, 253, 183,
      249, 7,   61,  33,  1,   134, 99,  239, 107, 127, 185, 200, 22,  205, 182, 42,  161, 181, 187, 173, 150, 29,  66,
      147, 116, 19,  132, 33,  0,   217, 88,  116, 30,  185, 223, 233, 186, 72,  195, 170, 95,  234, 139, 5,   215, 32,
      31,  121, 188, 121, 6,   77,  124, 154, 38,  159, 137, 218, 119, 239, 53,  87,  243, 130, 217, 194, 180, 101, 72,
      26,  233, 14,  153, 247, 23,  9,   168, 79,  206, 62,  96,  2,   84,  119, 241, 118, 91,  240, 162, 61,  227, 135,
      98,  223, 112, 86,  67,  244, 181, 187, 113, 125, 240, 45,  62,  186, 247, 19,  20,  241, 185, 165, 25,  84,  68,
      138, 109, 75,  218, 95,  37,  116, 172, 70,  190, 176, 56,  104, 169, 184, 68,  164, 128, 106, 207, 2,   253, 36,
      109, 198, 4,   112, 6,   198, 215, 130, 11,  233, 165, 79,  169, 214, 110, 67,  244, 196, 179, 158, 57,  110, 126,
      136, 58,  119, 106, 124, 8,   63,  42,  57,  12,  183, 69,  75,  168, 228, 8,   204, 112, 200, 57,  186, 124, 148,
      27,  109, 175, 234, 111, 41,  186, 23,  134, 174, 25,  150, 38,  42,  47,  74,  101, 27,  140, 18,  115, 251, 111,
      231, 162, 179, 169, 53,  120, 145, 1,   79,  51,  63,  174, 7,   208, 92,  69,  12,  56,  25,  182, 28,  108, 36,
      109, 190, 107, 1,   103, 130, 86,  41,  236, 6,   97,  41,  110, 78,  78,  17,  149, 66,  189, 175, 148, 50,  74,
      37,  73,  230, 180, 201, 77,  208, 206, 110, 158, 26,  115, 206, 97,  49,  187, 165, 139, 253, 87,  253, 116, 74,
      31,  159, 78,  179, 8,   65,  111, 16,  34,  7,   134, 109, 97,  55,  181, 244, 16,  137, 95,  112, 82,  129, 97,
      47,  215, 64,  246, 95,  98,  254, 160, 237, 71,  76,  49,  223, 47,  74,  45,  162, 197, 156, 34,  19,  222, 58,
      138, 208, 121, 218, 199, 45,  49,  190, 211, 167, 62,  54,  25,  101, 86,  212, 147, 28,  236, 253, 251, 67,  12,
      178, 152, 199, 9,   218, 9,   164, 195, 250, 241, 249, 143, 222, 250, 94,  12,  36,  232, 219, 128, 148, 186, 21,
      100, 50,  32,  205, 89,  252, 201, 99,  153, 71,  70,  227, 199, 189, 139, 20,  100, 88,  12,  70,  90,  212, 70,
      51,  37,  76,  186, 252, 19,  245, 18,  251, 176, 110, 239, 240, 29,  200, 232, 79,  192, 71,  172, 190, 97,  217,
      150, 29,  36,  31,  110, 183, 54,  197, 38,  163, 190, 188, 9,   234, 186, 180, 229, 19,  126, 196, 242, 27,  180,
      198, 206, 197, 1,   136, 210, 245, 185, 251, 135, 65,  150, 194, 190, 174, 41,  107, 151, 70,  225, 21,  227, 4,
      65,  220, 92,  210, 68,  145, 121, 13,  155, 197, 122, 4,   1,   133, 198, 134, 148, 132, 195, 133, 189, 129, 114,
      231, 23,  110, 91,  16,  254, 123, 223, 18,  157, 191, 183, 131, 25,  105, 15,  28,  195, 14,  217, 71,  75,  218,
      145, 35,  206, 193, 178, 240, 73,  219, 30,  135, 144, 177, 32,  30,  252, 82,  110, 188, 21,  196, 172, 180, 52,
      166, 191, 107, 210, 133, 67,  114, 5,   91,  140, 74,  101, 220, 95,  69,  253, 179, 67,  87,  148, 141, 12,  78,
      84,  6,   221, 203, 214, 0,   85,  30,  22,  248, 69,  222, 67,  84,  176, 14,  105, 188, 77,  75,  152, 188, 88,
      89,  180, 122, 164, 76,  149, 254, 45,  132, 151, 142, 85,  188, 44,  52,  88,  170, 209, 47,  220, 109, 225, 178,
      56,  143, 26,  157, 69,  216, 190, 138, 238, 67,  105, 18,  127, 201, 192, 254, 102, 17,  235, 160, 1,   109, 146,
      51,  209, 65,  233, 39,  106, 215, 128, 189, 113, 89,  73,  86,  116, 32,  149, 97,  45,  116, 49,  46,  227, 67,
      240, 44,  158, 98,  31,  238, 88,  104, 136, 175, 85,  101, 37,  10,  89,  108, 120, 194, 252, 101, 252, 162, 25,
      107, 134, 2,   181, 135, 199, 105, 143, 235, 21,  79,  154, 73,  93,  153, 158, 106, 20,  242, 140, 62,  209, 148,
      128, 52,  189, 216, 143, 29,  135, 120, 170, 227, 88,  209, 143, 73,  44,  87,  227, 162, 79,  48,  45,  246, 171,
      112, 61,  63,  170, 101, 99,  31,  9,   140, 77,  93,  250, 157, 184, 178, 242, 174, 76,  42,  67,  96,  105, 233,
      169, 100, 200, 96,  181, 19,  111, 132, 143, 4,   244, 97,  134, 140, 207, 135, 118, 165, 86,  194, 141, 44,  21,
      232, 169, 87,  235, 231, 146, 196, 225, 37,  47,  24,  215, 3,   200, 216, 63,  29,  89,  117, 90,  205, 129, 128,
      126, 174, 220, 78,  4,   95,  79,  26,  126, 132, 214, 153, 165, 79,  228, 29,  61,  109, 100, 82,  20,  164, 246,
      101, 141, 234, 126, 89,  70,  102, 45,  245, 161, 125, 48,  158, 253, 141, 194, 13,  14,  94,  111, 88,  15,  178,
      119, 4,   52,  99,  78,  143, 165, 140, 11,  222, 72,  3,   103, 226, 62,  177, 39,  76,  237, 110, 32,  172, 215,
      143, 0,   167, 18,  119, 163, 216, 176, 202, 54,  191, 81,  102, 207, 28,  171, 118, 239, 244, 82,  23,  98,  140,
      151, 122, 1,   140, 35,  251, 120, 203, 203, 139, 2,   64,  153, 224, 37,  120, 136, 37,  211, 25,  107, 69,  94,
      190, 141, 48,  57,  145, 251, 132, 245, 22,  36,  219, 207, 130, 85,  42,  219, 114, 181, 223, 66,  247, 65,  224,
      176, 118, 140, 169, 170, 8,   239, 92,  196, 77,  98,  59,  211, 141, 247, 222, 41,  128, 142, 22,  210, 129, 204,
      80,  168, 124, 159, 76,  248, 39,  146, 134, 112, 31,  202, 18,  208, 119, 43,  9,   66,  24,  251, 23,  146, 18,
      241, 61,  218, 169, 186, 196, 19,  152, 115, 33,  188, 171, 178, 115, 240, 82,  70,  251, 112, 188, 33,  48,  245,
      180, 53,  135, 210, 114, 99,  212, 57,  107, 241, 116, 76,  129, 6,   109, 83,  209, 125, 15,  77,  234, 250, 116,
      175, 191, 234, 59,  141, 51,  58,  48,  46,  154, 128, 19,  135, 112, 109, 227, 227, 125, 201, 32,  52,  150, 158,
      12,  125, 172, 28,  111, 243, 100, 149, 77,  159, 45,  147, 23,  47,  144, 189, 176, 84,  155, 208, 213, 252, 4,
      228, 232, 253, 108, 206, 23,  183, 75,  248, 226, 253, 170, 147, 106, 123, 217, 89,  155, 76,  247, 61,  80,  32,
      47,  197, 72,  10,  223, 14,  222, 40,  82,  16,  137, 228, 214, 213, 213, 158, 125, 159, 154, 148, 250, 149, 24,
      198, 154, 227, 142, 59,  64,  15,  19,  20,  105, 89,  39,  228, 51,  99,  105, 245, 89,  182, 116, 94,  70,  181,
      59,  159, 84,  104, 16,  7,   230, 13,  66,  201, 191, 143, 217, 10,  79,  105, 169, 209, 202, 133, 194, 41,  33,
      183, 33,  10,  154, 8,   212, 141, 215, 192, 22,  100, 125, 44,  211, 82,  23,  228, 158, 240, 100, 70,  254, 25,
      44,  232, 199, 251, 206, 160, 78,  138, 76,  96,  245, 78,  167, 142, 32,  59,  61,  207, 248, 4,   5,   85,  170,
      151, 243, 56,  33,  130, 6,   226, 84,  249, 108, 236, 1,   178, 130, 14,  206, 54,  75,  136, 15,  167, 188, 201,
      59,  213, 147, 110, 64,  89,  31,  248, 87,  8,   113, 19,  59,  67,  8,   93,  10,  66,  185, 95,  0,   35,  181,
      231, 157, 117, 7,   230, 125, 107, 162, 15,  158, 61,  112, 101, 183, 100, 195, 253, 71,  248, 137, 92,  12,  245,
      243, 223, 64,  161, 242, 228, 99,  45,  223, 67,  1,   88,  227, 86,  82,  83,  162, 81,  81,  199, 67,  181, 231,
      126, 222, 22,  8,   33,  236, 65,  46,  209, 227, 67,  32,  170, 60,  188, 128, 126, 102, 42,  66,  49,  133, 26,
      219, 40,  231, 155, 179, 233, 246, 149, 203, 21,  126, 253, 140, 6,   197, 26,  247, 3,   251, 238, 172, 201, 86,
      124, 25,  197, 182, 254, 160, 91,  220, 135, 144, 216, 86,  189, 202, 32,  216, 250, 160, 197, 252, 105, 217, 93,
      224, 229, 147, 244, 30,  13,  82,  95,  240, 28,  89,  58,  181, 52,  108, 218, 129, 15,  156, 159, 138, 57,  175,
      89,  118, 74,  66,  175, 133, 24,  132, 198, 102, 218, 45,  236, 245, 202, 210, 132, 61,  84,  218, 80,  203, 11,
      167, 107, 93,  85,  223, 52,  29,  205, 199, 29,  85,  103, 12,  222, 240, 29,  87,  9,   214, 182, 45,  46,  198,
      214, 18,  65,  2,   159, 92,  175, 93,  175, 1,   238, 180, 237, 193, 124, 152, 8,   217, 127, 18,  7,   81,  33,
      190, 28,  177, 6,   186, 40,  44,  221, 34,  178, 150, 241, 42,  139, 86,  224, 50,  74,  137, 230, 246, 14,  237,
      11,  90,  25,  108, 184, 73,  93,  159, 111, 73,  5,   126, 62,  39,  200, 188, 249, 195, 30,  47,  225, 147, 254,
      185, 99,  60,  208, 90,  226, 211, 92,  235, 191, 50,  60,  221, 98,  113, 248, 234, 108, 80,  198, 64,  74,  213,
      13,  13,  155, 200, 33,  240, 226, 180, 42,  173, 241, 252, 252, 184, 25,  124, 19,  106, 73,  191, 135, 4,   169,
      141, 167, 105, 143, 151, 211, 49,  117, 200, 160, 105, 178, 130, 102, 157, 51,  82,  54,  13,  204, 176, 247, 133,
      126, 146, 253, 208, 53,  78,  48,  114, 26,  41,  202, 59,  167, 132, 68,  37,  97,  25,  61,  220, 27,  142, 72,
      64,  57,  122, 64,  63,  253, 181, 128, 40,  235, 89,  172, 183, 252, 133, 126, 181, 0,   181, 254, 156, 148, 105,
      192, 250, 100, 31,  57,  169, 64,  174, 161, 137, 95,  243, 158, 64,  192, 220, 132, 32,  62,  15,  226, 238, 81,
      106, 214, 145, 143, 231, 106, 32,  34,  64,  10,  53,  90,  186, 210, 185, 23,  241, 181, 69,  34,  254, 38,  182,
      122, 2,   180, 201, 197, 23,  80,  147, 58,  200, 131, 198, 90,  152, 57,  30,  31,  169, 221, 74,  196, 126, 186,
      9,   254, 243, 70,  243, 90,  223, 127, 93,  34,  76,  106, 227, 10,  150, 180, 134, 71,  53,  142, 56,  199, 231,
      167, 209, 115, 52,  224, 160, 121, 203, 124, 182, 79,  123, 166, 39,  125, 121, 170, 180, 92,  234, 200, 134, 249,
      41,  78,  174, 194, 238, 211, 51,  54,  112, 163, 153, 233, 143, 164, 6,   121, 133, 198, 4,   113, 29,  38,  51,
      142, 245, 145, 68,  27,  102, 146, 44,  119, 18,  169, 165, 241, 177, 250, 135, 81,  127, 171, 76,  121, 76,  60,
      237, 166, 221, 229, 84,  230, 17,  190, 130, 112, 47,  207, 171, 127, 86,  241, 169, 147, 45,  171, 246, 181, 222,
      103, 132, 73,  111, 46,  177, 187, 151, 254, 251, 134, 197, 93,  253, 143, 214, 165, 66,  224, 113, 97,  131, 32,
      222, 64,  181, 168, 193, 225, 12,  242, 89,  199, 139, 166, 236, 195, 135, 33,  174, 58,  98,  23,  86,  32,  130,
      60,  151, 82,  207, 123, 173, 211, 44,  221, 165, 51,  69,  36,  238, 204, 130, 135, 68,  10,  181, 201, 195, 15,
      72,  148, 119, 74,  114, 115, 102, 164, 185, 101, 107, 185, 221, 251, 67,  143, 208, 27,  80,  198, 95,  33,  189,
      237, 83,  129, 27,  33,  161, 98,  22,  113, 194, 46,  33,  177, 24,  141, 232, 218, 13,  47,  13,  139, 198, 5,
      34,  157, 5,   120, 68,  118, 45,  186, 48,  160, 218, 25,  55,  226, 213, 34,  104, 132, 178, 66,  149, 173, 81,
      154, 100, 170, 126, 10,  251, 65,  132, 130, 132, 207, 117, 26,  234, 13,  56,  181, 29,  191, 7,   29,  3,   91,
      190, 201, 159, 106, 79,  180, 97,  123, 63,  10,  38,  38,  195, 152, 108, 144, 146, 46,  10,  23,  146, 148, 101,
      224, 33,  88,  246, 12,  32,  179, 149, 45,  6,   253, 157, 36,  173, 189, 139, 20,  21,  55,  8,   101, 9,   157,
      137, 237, 154, 249, 90,  24,  119, 186, 81,  211, 251, 225, 21,  143, 99,  184, 222, 224, 113, 93,  142, 29,  89,
      185, 101, 147, 201, 123, 38,  165, 204, 204, 9,   243, 130, 246, 143, 83,  213, 6,   216, 5,   92,  218, 22,  142,
      201, 34,  253, 54,  168, 80,  177, 217, 45,  82,  104, 241, 222, 70,  198, 241, 196, 187, 153, 5,   143, 193, 145,
      135, 11,  47,  50,  146, 186, 246, 86,  218, 253, 47,  14,  168, 50,  91,  82,  235, 127, 174, 75,  137, 63,  236,
      198, 81,  190, 119, 154, 214, 92,  66,  0,   22,  235, 5,   226, 244, 141, 13,  254, 57,  162, 90,  17,  106, 209,
      240, 197, 6,   49,  86,  164, 230, 37,  17,  81,  194, 245, 130, 253, 167, 31,  150, 3,   226, 221, 64,  105, 83,
      247, 134, 96,  132, 221, 10,  161, 215, 151, 154, 194, 46,  71,  44,  250, 29,  228, 218, 48,  125, 133, 12,  70,
      86,  188, 182, 2,   109, 87,  225, 139, 106, 104, 51,  213, 46,  175, 194, 90,  24,  21,  29,  151, 154, 246, 0,
      125, 11,  186, 137, 105, 45,  192, 205, 114, 240, 170, 219, 139, 56,  134, 103, 205, 160, 115, 41,  124, 220, 87,
      177, 161, 242, 250, 220, 239, 114, 59,  171, 9,   56,  124, 31,  108, 184, 80,  135, 144, 222, 144, 26,  10,  205,
      163, 115, 243, 247, 237, 231, 91,  5,   173, 80,  82,  137, 124, 237, 79,  103, 7,   88,  48,  72,  176, 86,  23,
      139, 239, 244, 91,  244, 49,  127, 102, 195, 42,  103, 101, 167, 41,  156, 158, 213, 55,  92,  28,  254, 138, 33,
      35,  114, 83,  200, 249, 61,  25,  138, 228, 67,  152, 168, 143, 141, 142, 33,  164, 47,  18,  83,  123, 11,  15,
      224, 12,  231, 84,  0,   132, 184, 48,  77,  81,  219, 163, 109, 96,  225, 15,  250, 29,  196, 212, 250, 206, 137,
      191, 127, 142, 104, 168, 146, 103, 5,   175, 148, 181, 23,  142, 47,  64,  133, 238, 50,  167, 189, 10,  235, 253,
      65,  22,  140, 217, 222, 28,  60,  27,  191, 43,  252, 215, 169, 34,  228, 117, 125, 113, 221, 132, 38,  100, 156,
      206, 73,  134, 67,  78,  180, 50,  77,  219, 75,  142, 94,  204, 170, 80,  52,  84,  200, 216, 105, 244, 173, 133,
      217, 151, 120, 78,  215, 188, 2,   241, 180, 214, 122, 91,  47,  150, 181, 132, 16,  59,  98,  27,  143, 3,   172,
      169, 122, 127, 101, 154, 52,  169, 86,  82,  167, 108, 198, 12,  166, 109, 231, 138, 79,  194, 234, 179, 70,  67,
      216, 55,  107, 13,  217, 150, 165, 109, 176, 183, 95,  175, 89,  35,  32,  80,  105, 186, 41,  95,  33,  93,  248,
      211, 127, 207, 171, 218, 203, 158, 26,  4,   205, 213, 110, 72,  68,  93,  248, 122, 7,   205, 47,  224, 248, 214,
      254, 173, 51,  79,  42,  114, 83,  107, 136, 44,  94,  240, 147, 220, 27,  32,  33,  62,  33,  46,  145, 4,   101,
      123, 8,   53,  156, 20,  105, 201, 101, 111, 136, 244, 97,  131, 193, 10,  172, 103, 187, 103, 88,  233, 253, 153,
      57,  67,  206, 188, 95,  227, 150, 9,   29,  17,  149, 77,  13,  138, 107, 38,  122, 246, 208, 199, 50,  12,  117,
      199, 48,  22,  65,  146, 27,  152, 196, 235, 187, 33,  84,  164, 163, 170, 240, 242, 230, 157, 91,  118, 238, 76,
      131, 21,  103, 180, 158, 67,  33,  170, 63,  249, 4,   140, 172, 22,  28,  224, 174, 112, 11,  218, 38,  177, 33,
      142, 193, 226, 245, 92,  104, 13,  239, 212, 34,  131, 179, 172, 11,  119, 119, 233, 92,  107, 108, 35,  81,  248,
      23,  107, 20,  179, 17,  170, 129, 26,  144, 98,  13,  139, 199, 152, 66,  234, 211, 9,   237, 144, 45,  75,  176,
      130, 56,  17,  80,  241, 98,  66,  88,  152, 166, 175, 209, 238, 239, 9,   164, 77,  247, 239, 187, 145, 83,  181,
      146, 61,  117, 56,  229, 237, 69,  28,  60,  107, 190, 165, 222, 215, 32,  129, 202, 17,  159, 93,  168, 127, 105,
      157, 58,  239, 161, 126, 123, 31,  188, 115, 227, 207, 109, 158, 70,  51,  67,  234, 37,  100, 127, 199, 132, 99,
      73,  117, 182, 153, 15,  94,  168, 63,  136, 91,  224, 221, 3,   154, 216, 38,  121, 229, 135, 220, 32,  105, 168,
      197, 197, 96,  52,  122, 65,  210, 43,  185, 206, 28,  114, 197, 112, 86,  68,  153, 21,  136, 141, 121, 172, 212,
      1,   119, 163, 100, 144, 36,  67,  72,  249, 129, 10,  64,  186, 76,  189, 171, 212, 214, 154, 100, 32,  33,  2,
      138, 46,  85,  204, 55,  57,  176, 188, 112, 184, 104, 230, 65,  87,  8,   123, 234, 138, 225, 213, 131, 181, 189,
      63,  78,  27,  142, 19,  161, 178, 225, 0,   225, 101, 76,  177, 2,   184, 158, 196, 251, 230, 250, 250, 6,   81,
      248, 94,  129, 12,  94,  216, 0,   208, 252, 241, 179, 27,  242, 147, 212, 173, 27,  172, 7,   12,  34,  139, 247,
      240, 248, 25,  129, 254, 51,  216, 143, 78,  150, 235, 212, 193, 218, 169, 199, 226, 92,  61,  165, 247, 1,   73,
      150, 9,   34,  10,  161, 58,  81,  66,  189, 170, 134, 3,   69,  33,  82,  201, 42,  164, 129, 76,  187, 165, 100,
      32,  94,  229, 182, 73,  69,  5,   143, 232, 163, 254, 162, 70,  118, 70,  132, 147, 81,  51,  201, 150, 224, 225,
      8,   89,  136, 221, 253, 194, 47,  143, 216, 39,  54,  24,  61,  21,  130, 24,  235, 121, 135, 72,  160, 64,  169,
      74,  240, 236, 107, 24,  62,  252, 38,  186, 4,   88,  41,  5,   238, 130, 51,  187, 244, 74,  48,  24,  24,  252,
      228, 181, 146, 12,  186, 47,  181, 156, 86,  214, 226, 82,  120, 245, 86,  195, 64,  216, 239, 221, 36,  86,  246,
      226, 222, 42,  251, 31,  186, 217, 24,  167, 53,  65,  39,  9,   61,  247, 235, 198, 56,  149, 87,  215, 185, 172,
      146, 164, 193, 207, 113, 35,  226, 99,  119, 233, 44,  118, 199, 136, 66,  1,   110, 4,   196, 148, 132, 215, 132,
      236, 55,  212, 89,  245, 151, 201, 164, 223, 52,  130, 184, 55,  240, 80,  75,  107, 172, 114, 165, 94,  178, 150,
      197, 8,   195, 45,  244, 127, 169, 250, 173, 144, 30,  151, 141, 132, 99,  194, 234, 140, 34,  3,   224, 226, 179,
      177, 68,  230, 71,  250, 42,  188, 142, 98,  98,  193, 250, 3,   211, 176, 78,  164, 119, 125, 161, 192, 241, 36,
      205, 166, 52,  52,  92,  14,  239, 10,  13,  197, 66,  230, 39,  233, 191, 220, 136, 11,  11,  219, 0,   231, 248,
      183, 174, 73,  120, 6,   26,  254, 85,  217, 208, 250, 195, 109, 55,  215, 235, 218, 82,  8,   224, 120, 66,  244,
      172, 150, 13,  134, 96,  22,  61,  72,  160, 52,  235, 62,  205, 132, 97,  232, 134, 138, 28,  5,   211, 252, 135,
      35,  87,  5,   138, 144, 190, 12,  148, 147, 39,  89,  39,  221, 147, 238, 253, 21,  157, 216, 55,  53,  177, 83,
      8,   122, 71,  62,  105, 203, 122, 111, 250, 108, 239, 234, 72,  218, 69,  168, 8,   132, 112, 21,  18,  46,  102,
      143, 55,  228, 94,  77,  173, 23,  229, 80,  185, 11,  212, 237, 122, 248, 195, 136, 85,  228, 94,  154, 57,  21,
      115, 94,  10,  250, 22,  69,  207, 97,  62,  243, 102, 210, 162, 96,  90,  197, 105, 73,  191, 90,  32,  166, 246,
      88,  228, 125, 222, 53,  197, 178, 2,   2,   217, 45,  216, 131, 231, 102, 175, 251, 187, 254, 162, 212, 9,   41,
      153, 188, 110, 101, 70,  37,  73,  94,  240, 20,  92,  21,  89,  26,  191, 154, 219, 67,  175, 203, 253, 42,  83,
      112, 158, 58,  114, 238, 154, 217, 14,  212, 112, 168, 138, 200, 18,  71,  155, 139, 69,  137, 64,  47,  210, 248,
      145, 159, 58,  129, 14,  225, 235, 35,  70,  19,  99,  19,  120, 194, 0,   5,   126, 122, 95,  189, 98,  34,  171,
      229, 71,  244, 138, 153, 176, 209, 34,  76,  19,  86,  19,  88,  232, 170, 232, 6,   217, 234, 92,  109, 145, 200,
      70,  222, 171, 30,  237, 221, 42,  224, 102, 121, 115, 197, 17,  20,  92,  100, 171, 41,  190, 236, 122, 202, 95,
      11,  198, 177, 204, 48,  150, 183, 149, 144, 212, 182, 121, 86,  119, 48,  20,  141, 168, 158, 158, 202, 90,  214,
      24,  144, 88,  182, 19,  13,  105, 16,  99,  80,  68,  205, 191, 198, 85,  241, 203, 71,  121, 184, 198, 21,  188,
      189, 171, 61,  131, 75,  185, 26,  156, 228, 222, 207, 3,   232, 202, 8,   229, 31,  200, 52,  61,  243, 248, 219,
      114, 136, 5,   233, 136, 235, 82,  87,  231, 41,  239, 132, 205, 144, 44,  139, 99,  217, 145, 249, 86,  159, 238,
      82,  130, 36,  33,  54,  105, 142, 52,  157, 193, 223, 118, 29,  16,  43,  114, 214, 84,  159, 25,  60,  25,  218,
      196, 15,  22,  220, 162, 138, 174, 96,  188, 49,  172, 204, 106, 140, 91,  199, 17,  242, 145, 96,  179, 34,  189,
      178, 224, 235, 245, 132, 159, 87,  57,  182, 174, 229, 102, 211, 86,  6,   210, 250, 33,  228, 41,  201, 155, 172,
      40,  5,   27,  41,  134, 224, 232, 97,  87,  219, 28,  122, 219, 12,  224, 66,  11,  161, 22,  106, 130, 222, 38,
      145, 134, 175, 184, 135, 93,  146, 224, 61,  28,  119, 138, 59,  136, 143, 24,  206, 52,  250, 99,  195, 71,  26,
      163, 29,  201, 97,  252, 230, 88,  160, 229, 234, 217, 97,  242, 161, 228, 204, 98,  75,  81,  155, 51,  184, 123,
      50,  26,  120, 50,  222, 50,  23,  79,  179, 183, 175, 182, 227, 27,  164, 181, 158, 126, 4,   229, 252, 206, 81,
      65,  89,  230, 179, 82,  54,  64,  229, 147, 44,  34,  139, 36,  98,  244, 56,  12,  133, 229, 156, 249, 82,  163,
      77,  120, 142, 79,  92,  251, 109, 173, 94,  194, 226, 43,  181, 118, 253, 215, 204, 23,  26,  161, 253, 206, 251,
      159, 163, 46,  246, 114, 201, 243, 66,  20,  251, 91,  9,   188, 25,  39,  82,  22,  146, 26,  232, 222, 252, 81,
      228, 238, 250, 212, 61,  75,  3,   155, 129, 64,  45,  102, 222, 172, 194, 133, 227, 35,  135, 142, 144, 21,  100,
      42,  75,  254, 68,  249, 83,  102, 98,  51,  24,  58,  114, 214, 146, 0,   80,  20,  66,  205, 95,  21,  39,  150,
      87,  65,  221, 153, 44,  223, 195, 180, 90,  63,  232, 177, 27,  52,  122, 95,  251, 235, 4,   209, 253, 109, 154,
      238, 198, 9,   161, 172, 68,  24,  87,  113, 100, 209, 227, 86,  230, 42,  251, 203, 8,   43,  60,  44,  145, 159,
      24,  102, 226, 114, 96,  107, 103, 103, 187, 136, 217, 25,  2,   92,  57,  89,  180, 109, 236, 8,   119, 59,  130,
      182, 143, 1,   238, 71,  164, 78,  17,  139, 31,  32,  203, 201, 223, 89,  148, 23,  129, 222, 19,  243, 139, 10,
      236, 107, 83,  141, 10,  130, 158, 10,  72,  215, 54,  157, 114, 158, 6,   19,  74,  132, 142, 66,  14,  246, 47,
      252, 34,  104, 238, 142, 130, 228, 73,  236, 1,   63,  239, 32,  190, 81,  45,  46,  55,  208, 94,  126, 134, 149,
      64,  230, 6,   104, 39,  121, 183, 110, 29,  229, 42,  80,  138, 200, 64,  100, 184, 103, 11,  190, 51,  221, 201,
      146, 71,  27,  192, 68,  157, 199, 56,  218, 151, 161, 127, 7,   217, 173, 200, 60,  207, 137, 27,  211, 88,  67,
      41,  26,  131, 186, 16,  109, 216, 54,  143, 58,  74,  68,  165, 79,  5,   235, 133, 58,  155, 81,  177, 52,  95,
      50,  174, 62,  11,  234, 204, 224, 230, 251, 151, 144, 15,  215, 60,  95,  41,  21,  168, 239, 21,  251, 21,  60,
      88,  212, 200, 140, 58,  196, 248, 242, 191, 92,  222, 166, 106, 122, 61,  94,  201, 63,  128, 163, 154, 225, 50,
      29,  26,  81,  138, 177, 56,  180, 54,  188, 139, 92,  141, 111, 251, 60,  14,  108, 218, 225, 37,  193, 54,  158,
      112, 159, 252, 156, 108, 115, 181, 201, 230, 119, 32,  57,  125, 206, 125, 126, 56,  142, 11,  196, 241, 61,  94,
      91,  52,  239, 60,  5,   207, 169, 35,  47,  116, 178, 223, 89,  55,  122, 29,  12,  34,  217, 238, 160, 253, 39,
      158, 75,  214, 216, 127, 52,  129, 233, 31,  145, 121, 196, 85,  243, 2,   155, 38,  31,  75,  11,  46,  65,  151,
      9,   33,  27,  58,  165, 132, 24,  3,   128, 58,  118, 131, 108, 5,   137, 5,   192, 40,  193, 86,  106, 185, 91,
      161, 146, 85,  115, 131, 216, 203, 249, 54,  157, 198, 72,  101, 114, 248, 71,  113, 163, 184, 82,  185, 87,  68,
      179, 222, 59,  75,  212, 183, 170, 248, 236, 227, 41,  248, 115, 99,  30,  202, 68,  217, 180, 50,  65,  168, 23,
      14,  21,  167, 146, 234, 213, 60,  11,  108, 159, 74,  195, 218, 181, 94,  61,  75,  42,  92,  52,  205, 56,  26,
      219, 33,  208, 154, 131, 163, 185, 145, 91,  120, 35,  43,  112, 59,  96,  84,  48,  130, 78,  184, 144, 32,  166,
      68,  172, 148, 196, 41,  12,  205, 85,  252, 66,  29,  56,  159, 81,  88,  177, 91,  86,  238, 39,  12,  129, 6,
      27,  212, 233, 9,   175, 3,   140, 45,  65,  75,  48,  243, 239, 107, 55,  63,  10,  91,  121, 245, 147, 59,  157,
      38,  118, 158, 244, 204, 130, 125, 183, 25,  206, 46,  130, 162, 238, 130, 253, 87,  102, 102, 59,  173, 36,  249,
      216, 46,  75,  185, 60,  149, 188, 93,  98,  6,   161, 102, 213, 69,  1,   72,  215, 75,  189, 6,   164, 201, 217,
      99,  113, 170, 103, 246, 230, 45,  66,  36,  81,  90,  68,  85,  227, 76,  30,  108, 167, 83,  95,  47,  107, 223,
      235, 133, 91,  199, 66,  70,  55,  152, 0,   185, 166, 219, 209, 144, 43,  111, 113, 151, 228, 157, 190, 173, 16,
      53,  79,  102, 171, 3,   44,  119, 151, 165, 163, 97,  34,  250, 159, 159, 161, 238, 38,  205, 137, 3,   169, 7,
      18,  67,  56,  115, 166, 116, 187, 220, 93,  179, 162, 198, 214, 86,  61,  14,  254, 186, 53,  226, 6,   200, 55,
      227, 202, 78,  87,  123, 121, 246, 133, 132, 223, 191, 124, 168, 162, 167, 101, 20,  138, 250, 115, 87,  151, 127,
      52,  37,  126, 251, 193, 131, 38,  77,  40,  56,  199, 161, 222, 205, 240, 116, 198, 186, 129, 236, 81,  94,  159,
      48,  94,  208, 52,  137, 82,  52,  3,   219, 109, 242, 16,  143, 183, 111, 10,  108, 54,  166, 119, 70,  118, 101,
      206, 136, 209, 181, 2,   253, 149, 166, 139, 232, 71,  157, 220, 89,  222, 71,  44,  177, 194, 14,  55,  166, 71,
      158, 154, 187, 40,  119, 170, 46,  150, 16,  201, 146, 23,  121, 212, 38,  184, 7,   55,  181, 46,  188, 152, 53,
      86,  30,  85,  65,  96,  107, 75,  61,  40,  181, 108, 215, 64,  81,  172, 149, 128, 148, 53,  90,  67,  135, 13,
      192, 198, 235, 39,  202, 62,  94,  184, 95,  176, 25,  23,  121, 15,  182, 182, 169, 67,  153, 39,  89,  50,  144,
      184, 97,  132, 127, 217, 75,  125, 79,  53,  18,  191, 105, 183, 22,  199, 111, 254, 140, 138, 11,  249, 147, 107,
      121, 41,  55,  225, 101, 109, 214, 220, 244, 99,  182, 143, 147, 166, 194, 190, 129, 218, 244, 116, 229, 169, 222,
      190, 78,  42,  201, 16,  4,   165, 23,  253, 254, 229, 238, 3,   201, 133, 104, 213, 17,  129, 215, 58,  76,  193,
      232, 242, 43,  196, 145, 215, 203, 66,  71,  167, 191, 14,  41,  29,  81,  21,  160, 26,  90,  7,   9,   219, 186,
      84,  12,  71,  200, 23,  55,  118, 115, 155, 61,  235, 8,   107, 147, 62,  224, 96,  246, 23,  149, 81,  67,  56,
      21,  12,  248, 158, 25,  7,   16,  112, 127, 82,  31,  184, 243, 207, 151, 47,  93,  69,  242, 208, 192, 52,  250,
      84,  78,  237, 217, 83,  10,  163, 232, 121, 22,  3,   203, 164, 106, 203, 153, 145, 157, 156, 156, 78,  164, 47,
      232, 56,  151, 195, 3,   218, 246, 10,  162, 150, 207, 185, 236, 128, 82,  221, 16,  161, 15,  248, 209, 110, 19,
      135, 50,  22,  190, 96,  222, 24,  144, 133, 127, 174, 130, 13,  15,  78,  115, 233, 62,  111, 161, 30,  200, 26,
      141, 47,  240, 49,  243, 11,  50,  94,  231, 242, 37,  195, 93,  8,   186, 102, 195, 31,  253, 134, 219, 139, 56,
      244, 165, 192, 242, 204, 165, 99,  228, 87,  27,  45,  67,  84,  46,  225, 205, 121, 205, 186, 28,  2,   248, 249,
      90,  113, 214, 183, 84,  160, 148, 42,  183, 146, 189, 191, 81,  153, 150, 25,  44,  87,
  };
  uint8_t data[9 * 2 * 16 * 32] = {
      125, 85,  69,  166, 119, 70,  157, 170, 14,  11,  225, 215, 182, 243, 153, 117, 91,  88,  206, 18,  118, 25,  5,
      101, 134, 166, 32,  103, 107, 0,   0,   0,   165, 36,  16,  204, 216, 242, 63,  244, 187, 78,  56,  206, 35,  78,
      88,  218, 9,   46,  177, 106, 153, 204, 37,  71,  136, 242, 96,  175, 127, 217, 0,   0,   84,  236, 222, 119, 11,
      137, 45,  72,  134, 212, 31,  64,  177, 53,  246, 64,  11,  169, 229, 65,  90,  22,  222, 208, 115, 63,  124, 143,
      185, 88,  0,   0,   250, 254, 28,  208, 87,  18,  113, 149, 72,  251, 16,  241, 158, 35,  190, 210, 6,   60,  27,
      172, 221, 148, 82,  213, 42,  175, 244, 138, 200, 116, 0,   0,   90,  208, 216, 224, 236, 3,   219, 218, 109, 21,
      58,  51,  194, 158, 207, 249, 241, 213, 30,  134, 122, 54,  199, 230, 62,  180, 205, 200, 22,  30,  0,   0,   201,
      66,  131, 81,  242, 147, 13,  238, 4,   97,  83,  170, 194, 44,  65,  11,  12,  160, 230, 136, 85,  248, 161, 212,
      77,  74,  108, 151, 205, 185, 0,   0,   42,  249, 23,  67,  23,  188, 231, 39,  237, 48,  32,  122, 216, 14,  125,
      110, 190, 42,  110, 118, 18,  249, 106, 196, 91,  202, 185, 67,  182, 223, 0,   0,   35,  45,  103, 189, 132, 146,
      120, 95,  99,  90,  136, 110, 0,   245, 97,  27,  77,  47,  106, 4,   31,  221, 178, 211, 14,  79,  6,   168, 42,
      233, 0,   0,   194, 64,  108, 123, 11,  144, 243, 80,  146, 107, 251, 178, 167, 215, 42,  92,  180, 174, 102, 107,
      4,   58,  251, 76,  139, 187, 16,  140, 161, 186, 0,   0,   76,  248, 233, 153, 243, 119, 115, 123, 72,  103, 241,
      66,  114, 170, 109, 190, 181, 183, 251, 84,  32,  2,   141, 27,  13,  2,   197, 234, 181, 72,  0,   0,   108, 69,
      74,  63,  69,  30,  26,  194, 46,  182, 194, 156, 234, 1,   84,  34,  249, 58,  86,  225, 74,  153, 214, 42,  75,
      220, 140, 253, 187, 195, 0,   0,   1,   1,   151, 249, 60,  48,  100, 191, 141, 247, 21,  61,  59,  167, 46,  76,
      55,  220, 74,  242, 141, 184, 183, 20,  163, 136, 56,  183, 173, 170, 0,   0,   163, 16,  110, 140, 112, 154, 12,
      56,  138, 161, 38,  225, 101, 120, 250, 48,  76,  234, 191, 28,  242, 206, 4,   203, 1,   54,  188, 249, 150, 95,
      0,   0,   194, 161, 194, 167, 190, 150, 74,  85,  198, 151, 40,  193, 81,  243, 175, 41,  39,  167, 44,  53,  45,
      244, 62,  153, 34,  24,  223, 7,   29,  234, 0,   0,   146, 132, 179, 75,  37,  71,  10,  102, 190, 169, 118, 10,
      176, 169, 175, 32,  129, 107, 194, 108, 17,  194, 36,  90,  196, 97,  179, 61,  66,  139, 0,   0,   247, 24,  67,
      238, 37,  89,  111, 120, 210, 97,  82,  80,  45,  22,  235, 73,  50,  130, 28,  96,  104, 5,   208, 51,  241, 204,
      200, 33,  147, 5,   0,   0,   138, 2,   219, 162, 246, 7,   17,  29,  222, 103, 72,  137, 20,  39,  156, 19,  87,
      91,  23,  21,  24,  250, 34,  203, 225, 28,  31,  1,   116, 215, 0,   0,   181, 83,  178, 203, 160, 195, 113, 134,
      7,   106, 145, 51,  220, 74,  230, 234, 70,  155, 95,  212, 199, 45,  32,  224, 135, 89,  11,  134, 19,  32,  0,
      0,   145, 105, 42,  244, 203, 59,  4,   180, 105, 34,  222, 94,  26,  110, 194, 30,  64,  67,  227, 240, 101, 98,
      86,  216, 189, 165, 92,  99,  132, 31,  0,   0,   159, 188, 220, 38,  76,  102, 242, 35,  101, 220, 98,  49,  209,
      20,  206, 243, 241, 32,  89,  6,   114, 113, 141, 209, 191, 167, 180, 239, 33,  121, 0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   188, 72,  162, 20,  169, 165, 42,  111, 162, 108, 189,
      187, 97,  71,  49,  9,   100, 90,  192, 186, 150, 155, 254, 206, 52,  148, 105, 44,  105, 128, 0,   0,   121, 26,
      61,  241, 184, 79,  57,  41,  179, 36,  175, 165, 55,  76,  190, 218, 50,  212, 71,  180, 194, 197, 123, 193, 166,
      141, 188, 52,  18,  189, 0,   0,   6,   233, 227, 185, 68,  169, 12,  186, 169, 109, 148, 139, 181, 49,  211, 9,
      32,  70,  172, 229, 190, 122, 223, 178, 191, 12,  77,  88,  127, 113, 0,   0,   77,  14,  135, 165, 164, 214, 183,
      23,  53,  190, 50,  253, 244, 223, 167, 164, 205, 51,  190, 19,  174, 4,   18,  240, 107, 78,  75,  170, 201, 89,
      0,   0,   124, 153, 98,  25,  128, 110, 69,  134, 120, 107, 74,  87,  16,  47,  62,  195, 89,  37,  97,  126, 41,
      1,   157, 73,  210, 84,  152, 209, 192, 73,  0,   0,   154, 247, 223, 84,  106, 67,  75,  174, 145, 1,   37,  253,
      137, 74,  54,  250, 252, 76,  217, 196, 107, 133, 191, 219, 133, 6,   188, 47,  254, 86,  0,   0,   38,  23,  112,
      68,  207, 244, 168, 25,  1,   103, 73,  116, 95,  45,  25,  241, 201, 186, 150, 242, 151, 198, 183, 30,  67,  221,
      88,  220, 102, 116, 0,   0,   159, 9,   86,  138, 2,   196, 228, 150, 79,  130, 230, 74,  112, 162, 101, 249, 99,
      252, 29,  27,  70,  134, 131, 135, 114, 203, 89,  109, 17,  32,  0,   0,   137, 168, 67,  109, 253, 179, 8,   38,
      51,  86,  180, 31,  82,  197, 86,  143, 153, 19,  36,  180, 225, 148, 25,  144, 5,   214, 180, 225, 235, 149, 0,
      0,   218, 79,  244, 75,  36,  158, 204, 42,  63,  41,  201, 159, 129, 156, 212, 222, 71,  245, 31,  198, 21,  132,
      105, 177, 91,  0,   122, 178, 160, 97,  0,   0,   119, 206, 181, 218, 109, 57,  112, 47,  174, 236, 77,  78,  97,
      34,  147, 250, 70,  18,  110, 206, 227, 195, 15,  32,  140, 85,  164, 56,  1,   45,  0,   0,   239, 62,  187, 95,
      198, 110, 200, 74,  7,   6,   208, 179, 47,  19,  28,  94,  227, 251, 183, 197, 4,   133, 28,  30,  74,  30,  76,
      143, 109, 116, 0,   0,   53,  96,  113, 37,  4,   126, 57,  101, 208, 97,  206, 8,   215, 222, 236, 12,  199, 176,
      54,  1,   65,  189, 195, 252, 101, 22,  149, 26,  146, 49,  0,   0,   87,  2,   125, 116, 112, 136, 186, 27,  92,
      41,  110, 65,  64,  58,  253, 36,  189, 110, 197, 136, 220, 129, 14,  82,  220, 248, 254, 157, 51,  46,  0,   0,
      243, 84,  240, 172, 6,   58,  124, 140, 69,  110, 158, 111, 246, 138, 251, 232, 139, 239, 38,  210, 92,  114, 217,
      110, 95,  69,  45,  69,  209, 227, 0,   0,   130, 119, 45,  70,  198, 119, 148, 18,  12,  78,  26,  16,  95,  208,
      67,  219, 20,  240, 163, 245, 210, 231, 71,  188, 69,  222, 132, 216, 65,  67,  0,   0,   217, 241, 62,  190, 215,
      106, 27,  115, 56,  78,  115, 34,  98,  121, 12,  128, 100, 29,  190, 185, 68,  23,  75,  21,  253, 67,  151, 190,
      233, 240, 0,   0,   194, 118, 186, 176, 130, 124, 109, 251, 25,  17,  206, 7,   254, 218, 178, 148, 88,  200, 188,
      251, 145, 110, 218, 196, 179, 84,  142, 138, 39,  44,  0,   0,   180, 91,  247, 56,  11,  8,   175, 111, 182, 149,
      97,  134, 160, 199, 152, 186, 12,  232, 9,   135, 121, 91,  145, 172, 67,  176, 85,  238, 106, 158, 0,   0,   101,
      240, 19,  104, 233, 63,  234, 231, 28,  66,  49,  109, 237, 45,  199, 21,  70,  79,  234, 65,  13,  16,  35,  180,
      87,  14,  188, 67,  215, 98,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   31,  134, 209, 79,  242, 134, 47,  79,  126, 119, 32,  239, 37,  207, 196, 248, 218, 245, 77,  227, 47,  253,
      40,  59,  159, 41,  240, 59,  178, 8,   0,   0,   238, 2,   148, 48,  174, 140, 24,  26,  89,  4,   172, 244, 120,
      130, 77,  39,  169, 180, 234, 125, 144, 170, 82,  64,  84,  33,  100, 61,  130, 113, 0,   0,   88,  181, 128, 45,
      76,  207, 215, 126, 70,  52,  215, 82,  136, 85,  98,  146, 186, 53,  250, 201, 189, 147, 16,  15,  104, 183, 70,
      207, 14,  19,  0,   0,   104, 135, 52,  246, 42,  135, 3,   132, 102, 99,  143, 23,  37,  42,  59,  134, 196, 135,
      116, 32,  176, 106, 137, 19,  16,  33,  254, 248, 206, 59,  0,   0,   136, 199, 189, 171, 67,  118, 200, 214, 45,
      78,  0,   98,  211, 219, 211, 112, 19,  210, 175, 52,  84,  123, 228, 20,  7,   10,  25,  4,   54,  67,  0,   0,
      175, 105, 216, 112, 96,  165, 216, 153, 245, 143, 167, 140, 25,  114, 141, 31,  152, 114, 191, 150, 155, 217, 214,
      105, 230, 154, 44,  5,   75,  8,   0,   0,   85,  143, 143, 61,  105, 86,  63,  165, 161, 165, 18,  151, 107, 181,
      247, 202, 115, 99,  234, 158, 208, 89,  213, 89,  13,  8,   232, 85,  136, 93,  0,   0,   101, 235, 29,  63,  233,
      194, 29,  79,  125, 140, 119, 122, 69,  223, 222, 18,  33,  212, 59,  12,  213, 155, 213, 39,  66,  212, 199, 170,
      15,  10,  0,   0,   37,  21,  135, 170, 169, 141, 89,  228, 48,  11,  163, 1,   94,  66,  41,  208, 188, 57,  141,
      125, 252, 76,  158, 228, 201, 141, 251, 151, 167, 66,  0,   0,   10,  79,  120, 101, 100, 44,  117, 29,  158, 222,
      216, 140, 190, 247, 128, 119, 171, 107, 51,  172, 4,   247, 125, 51,  191, 215, 206, 243, 188, 185, 0,   0,   89,
      154, 170, 99,  200, 21,  90,  61,  253, 72,  176, 35,  141, 65,  142, 43,  178, 241, 58,  28,  228, 61,  159, 99,
      143, 192, 160, 56,  201, 95,  0,   0,   108, 73,  227, 31,  96,  232, 205, 109, 141, 3,   202, 251, 48,  224, 22,
      9,   115, 116, 48,  111, 232, 80,  154, 105, 217, 22,  78,  33,  59,  0,   0,   0,   120, 93,  88,  9,   181, 169,
      129, 100, 194, 103, 54,  120, 57,  176, 210, 66,  240, 76,  46,  243, 253, 32,  148, 245, 10,  100, 138, 130, 213,
      35,  0,   0,   194, 153, 209, 140, 19,  87,  128, 82,  13,  226, 191, 203, 145, 118, 129, 24,  82,  129, 154, 100,
      108, 47,  250, 89,  79,  125, 76,  6,   147, 181, 0,   0,   252, 158, 143, 77,  111, 235, 126, 20,  14,  62,  81,
      203, 251, 140, 204, 251, 70,  6,   128, 149, 206, 197, 149, 182, 105, 44,  96,  226, 110, 231, 0,   0,   101, 106,
      73,  93,  132, 231, 174, 164, 94,  177, 102, 139, 132, 169, 80,  23,  251, 109, 19,  77,  23,  72,  24,  116, 169,
      211, 245, 84,  64,  157, 0,   0,   252, 20,  44,  250, 143, 146, 220, 246, 111, 39,  207, 2,   245, 170, 168, 146,
      112, 83,  135, 159, 183, 10,  198, 94,  209, 82,  78,  249, 89,  117, 0,   0,   162, 242, 87,  157, 4,   196, 78,
      101, 88,  76,  28,  64,  22,  8,   124, 18,  188, 209, 112, 45,  75,  223, 154, 70,  202, 23,  167, 108, 31,  7,
      0,   0,   25,  140, 227, 184, 244, 225, 4,   141, 15,  237, 171, 153, 36,  239, 159, 241, 33,  125, 109, 147, 248,
      14,  227, 181, 133, 228, 142, 236, 248, 230, 0,   0,   107, 62,  162, 178, 97,  37,  95,  234, 178, 110, 118, 224,
      219, 92,  76,  61,  48,  15,  227, 23,  226, 222, 142, 59,  194, 158, 32,  1,   87,  125, 0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   107, 161, 126, 49,  3,   32,  58,  198, 52,  65,
      33,  230, 249, 98,  241, 117, 53,  57,  148, 62,  23,  90,  34,  121, 194, 142, 121, 147, 143, 166, 0,   0,   162,
      242, 222, 133, 251, 216, 181, 102, 29,  2,   190, 246, 195, 113, 252, 200, 78,  122, 105, 15,  241, 152, 76,  203,
      238, 245, 76,  45,  214, 236, 0,   0,   15,  228, 22,  26,  238, 250, 52,  218, 205, 159, 28,  14,  30,  248, 252,
      160, 48,  64,  192, 226, 181, 57,  106, 124, 211, 145, 60,  171, 165, 195, 0,   0,   158, 99,  8,   219, 172, 160,
      108, 45,  199, 92,  177, 237, 47,  234, 184, 105, 114, 63,  250, 238, 69,  30,  227, 182, 51,  68,  237, 246, 66,
      135, 0,   0,   61,  45,  33,  40,  201, 197, 218, 236, 29,  175, 6,   11,  225, 108, 25,  178, 26,  253, 100, 81,
      34,  31,  10,  79,  54,  27,  166, 181, 224, 33,  0,   0,   112, 223, 236, 231, 86,  252, 129, 245, 85,  93,  186,
      90,  147, 80,  124, 130, 41,  181, 31,  106, 254, 169, 150, 123, 112, 102, 221, 222, 113, 174, 0,   0,   101, 67,
      65,  155, 124, 105, 15,  202, 103, 175, 40,  25,  254, 198, 19,  102, 202, 128, 57,  214, 38,  221, 180, 166, 163,
      146, 229, 103, 97,  58,  0,   0,   183, 1,   46,  179, 25,  217, 156, 210, 12,  1,   44,  108, 185, 64,  106, 157,
      59,  40,  169, 145, 182, 74,  134, 39,  153, 44,  84,  132, 131, 98,  0,   0,   100, 88,  209, 233, 197, 93,  159,
      132, 222, 238, 221, 184, 99,  74,  73,  51,  167, 235, 64,  143, 122, 196, 71,  125, 233, 119, 230, 73,  32,  23,
      0,   0,   195, 227, 227, 246, 182, 224, 138, 61,  240, 180, 34,  73,  60,  213, 191, 82,  132, 89,  174, 231, 2,
      126, 53,  121, 143, 18,  17,  111, 222, 86,  0,   0,   253, 86,  67,  149, 254, 229, 57,  84,  29,  237, 178, 93,
      208, 13,  135, 54,  68,  172, 161, 106, 180, 186, 142, 170, 164, 169, 190, 46,  64,  32,  0,   0,   71,  82,  32,
      203, 160, 147, 175, 218, 87,  193, 150, 159, 90,  13,  4,   13,  37,  183, 137, 32,  201, 9,   56,  180, 6,   165,
      130, 177, 181, 130, 0,   0,   248, 83,  170, 21,  91,  244, 89,  80,  9,   124, 241, 111, 226, 155, 169, 204, 97,
      252, 95,  34,  197, 254, 199, 92,  121, 241, 112, 187, 168, 60,  0,   0,   137, 162, 60,  126, 220, 30,  118, 203,
      214, 152, 42,  73,  211, 200, 141, 176, 25,  133, 243, 64,  23,  243, 231, 234, 133, 177, 47,  151, 193, 151, 0,
      0,   92,  81,  188, 253, 135, 13,  74,  11,  182, 8,   139, 5,   92,  33,  167, 247, 61,  126, 158, 10,  80,  70,
      167, 200, 198, 250, 207, 254, 225, 82,  0,   0,   12,  81,  128, 140, 144, 82,  66,  167, 45,  217, 86,  126, 235,
      240, 105, 133, 220, 181, 64,  53,  147, 243, 209, 134, 4,   135, 171, 251, 12,  207, 0,   0,   245, 199, 126, 6,
      216, 95,  175, 107, 46,  127, 224, 62,  191, 226, 143, 126, 27,  0,   192, 90,  58,  90,  115, 249, 113, 81,  127,
      134, 242, 123, 0,   0,   243, 67,  102, 197, 86,  240, 133, 93,  198, 18,  50,  39,  50,  180, 151, 146, 142, 181,
      220, 186, 200, 223, 52,  41,  29,  127, 86,  197, 89,  173, 0,   0,   223, 181, 42,  26,  189, 28,  24,  85,  214,
      7,   74,  200, 60,  42,  211, 253, 72,  254, 132, 210, 131, 127, 224, 78,  38,  171, 241, 93,  199, 211, 0,   0,
      64,  231, 66,  247, 202, 89,  132, 223, 18,  81,  137, 188, 221, 173, 49,  208, 64,  156, 32,  185, 198, 93,  160,
      174, 51,  76,  169, 253, 139, 44,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   221, 115, 129, 5,   66,  181, 152, 253, 186, 123, 34,  193, 174, 13,  130, 154, 225, 137, 177, 26,  88,
      156, 168, 77,  146, 140, 156, 105, 16,  166, 0,   0,   165, 102, 27,  34,  149, 29,  108, 157, 81,  38,  253, 145,
      75,  254, 253, 194, 139, 105, 161, 10,  48,  158, 143, 81,  103, 217, 206, 244, 59,  109, 0,   0,   51,  164, 33,
      157, 173, 191, 144, 36,  211, 165, 54,  135, 137, 57,  167, 46,  106, 45,  242, 205, 72,  213, 141, 219, 5,   222,
      73,  173, 98,  231, 0,   0,   69,  185, 161, 5,   81,  7,   146, 173, 251, 204, 168, 11,  63,  162, 31,  71,  104,
      192, 250, 163, 176, 55,  142, 163, 175, 28,  134, 133, 27,  138, 0,   0,   36,  101, 98,  120, 154, 29,  46,  189,
      225, 204, 80,  47,  236, 90,  150, 44,  51,  205, 220, 115, 86,  92,  33,  109, 148, 60,  67,  217, 143, 79,  0,
      0,   238, 107, 22,  68,  100, 3,   10,  139, 21,  9,   177, 50,  198, 17,  3,   250, 213, 114, 239, 243, 23,  28,
      164, 96,  181, 27,  78,  151, 3,   194, 0,   0,   204, 185, 113, 118, 170, 91,  23,  20,  143, 243, 217, 146, 81,
      106, 226, 29,  46,  240, 114, 247, 139, 254, 47,  225, 23,  191, 180, 120, 172, 234, 0,   0,   130, 221, 194, 45,
      126, 190, 146, 21,  99,  130, 45,  186, 190, 209, 221, 228, 175, 170, 59,  237, 239, 138, 18,  15,  142, 43,  50,
      78,  169, 179, 0,   0,   135, 251, 46,  186, 10,  201, 148, 55,  184, 246, 82,  246, 119, 240, 64,  218, 194, 219,
      171, 231, 244, 33,  83,  250, 47,  252, 77,  215, 122, 70,  0,   0,   68,  67,  33,  48,  251, 159, 101, 8,   222,
      143, 104, 86,  154, 197, 105, 48,  90,  139, 9,   91,  91,  35,  123, 29,  64,  215, 219, 188, 127, 67,  0,   0,
      10,  143, 177, 160, 65,  106, 224, 101, 224, 83,  241, 218, 214, 6,   83,  125, 24,  56,  56,  5,   244, 114, 11,
      196, 133, 169, 75,  2,   101, 216, 0,   0,   181, 208, 24,  218, 132, 79,  33,  9,   113, 213, 222, 253, 92,  49,
      247, 133, 21,  134, 124, 173, 49,  83,  15,  212, 238, 34,  142, 241, 154, 55,  0,   0,   201, 27,  141, 25,  130,
      180, 88,  157, 93,  6,   70,  47,  66,  86,  134, 12,  29,  103, 31,  80,  127, 200, 224, 250, 50,  228, 94,  180,
      52,  107, 0,   0,   195, 80,  232, 55,  132, 97,  246, 137, 142, 216, 198, 14,  0,   164, 96,  70,  151, 205, 108,
      82,  102, 249, 12,  206, 167, 117, 204, 214, 169, 13,  0,   0,   15,  198, 218, 226, 207, 123, 12,  237, 29,  5,
      241, 168, 22,  230, 132, 86,  154, 160, 184, 137, 195, 61,  231, 137, 189, 125, 170, 122, 86,  217, 0,   0,   72,
      95,  13,  213, 117, 63,  32,  154, 89,  92,  196, 50,  235, 37,  221, 188, 246, 115, 80,  124, 42,  25,  84,  191,
      10,  113, 80,  91,  82,  150, 0,   0,   148, 33,  47,  34,  26,  10,  179, 249, 185, 218, 187, 91,  5,   17,  10,
      182, 0,   41,  135, 237, 103, 138, 0,   127, 235, 221, 52,  47,  167, 165, 0,   0,   119, 189, 13,  104, 234, 38,
      149, 90,  101, 22,  153, 82,  226, 81,  161, 2,   125, 124, 144, 79,  101, 228, 132, 142, 253, 132, 84,  150, 108,
      109, 0,   0,   74,  237, 139, 132, 13,  38,  45,  24,  147, 142, 5,   235, 244, 194, 215, 109, 11,  220, 222, 103,
      167, 67,  184, 104, 65,  38,  200, 181, 198, 176, 0,   0,   114, 83,  198, 178, 56,  195, 6,   119, 201, 201, 143,
      127, 141, 245, 151, 87,  186, 87,  144, 7,   41,  152, 48,  168, 22,  100, 216, 132, 12,  183, 0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   95,  26,  42,  8,   253, 208, 240, 172, 34,
      129, 80,  146, 168, 37,  216, 114, 249, 57,  27,  81,  12,  226, 33,  254, 143, 24,  181, 86,  149, 1,   0,   0,
      175, 4,   114, 53,  153, 199, 242, 22,  131, 26,  241, 61,  127, 100, 38,  197, 129, 176, 142, 248, 34,  92,  82,
      162, 216, 62,  146, 246, 87,  110, 0,   0,   89,  205, 83,  156, 57,  50,  230, 28,  179, 144, 98,  117, 105, 127,
      121, 112, 10,  188, 19,  94,  139, 61,  201, 70,  39,  252, 12,  226, 215, 4,   0,   0,   35,  213, 107, 20,  67,
      12,  157, 224, 172, 98,  66,  56,  157, 199, 229, 86,  64,  112, 161, 129, 247, 165, 42,  118, 54,  38,  186, 222,
      185, 196, 0,   0,   32,  110, 136, 105, 206, 117, 91,  174, 11,  13,  88,  229, 58,  132, 135, 68,  186, 184, 178,
      12,  240, 247, 164, 70,  24,  186, 47,  42,  172, 148, 0,   0,   80,  72,  44,  201, 188, 199, 118, 112, 119, 139,
      152, 237, 239, 99,  220, 153, 76,  104, 225, 94,  248, 1,   129, 132, 61,  4,   181, 251, 146, 132, 0,   0,   105,
      68,  94,  101, 95,  48,  238, 11,  119, 199, 166, 69,  161, 73,  32,  21,  189, 230, 0,   216, 25,  73,  76,  147,
      21,  88,  156, 31,  164, 215, 0,   0,   186, 93,  240, 111, 227, 22,  76,  218, 233, 152, 175, 28,  126, 117, 105,
      136, 171, 65,  225, 0,   129, 150, 187, 81,  130, 41,  86,  186, 193, 132, 0,   0,   41,  248, 147, 136, 150, 65,
      131, 38,  92,  66,  209, 60,  123, 182, 168, 141, 212, 87,  101, 208, 254, 9,   165, 51,  24,  5,   214, 217, 207,
      236, 0,   0,   95,  122, 220, 244, 9,   146, 21,  177, 107, 234, 238, 107, 31,  153, 197, 121, 214, 8,   76,  252,
      51,  34,  100, 201, 235, 238, 226, 24,  113, 55,  0,   0,   33,  7,   27,  97,  29,  27,  103, 33,  108, 211, 239,
      190, 188, 15,  197, 172, 154, 123, 177, 241, 216, 10,  32,  150, 121, 130, 82,  167, 35,  212, 0,   0,   93,  205,
      32,  131, 17,  152, 180, 142, 35,  9,   9,   165, 115, 94,  96,  212, 100, 234, 2,   179, 143, 161, 94,  224, 135,
      51,  120, 53,  226, 89,  0,   0,   248, 47,  33,  193, 149, 196, 158, 193, 81,  237, 164, 222, 227, 168, 52,  1,
      32,  138, 184, 27,  78,  58,  229, 225, 72,  187, 245, 65,  99,  245, 0,   0,   211, 224, 62,  10,  77,  235, 67,
      226, 248, 144, 77,  215, 207, 63,  122, 119, 33,  225, 158, 242, 150, 81,  182, 8,   160, 244, 86,  39,  119, 151,
      0,   0,   127, 248, 33,  172, 13,  187, 33,  245, 23,  45,  247, 32,  109, 136, 65,  163, 2,   213, 196, 147, 235,
      66,  73,  89,  64,  74,  195, 9,   233, 201, 0,   0,   207, 214, 46,  103, 138, 33,  170, 92,  107, 75,  239, 129,
      158, 91,  210, 100, 138, 131, 251, 212, 212, 189, 69,  136, 169, 48,  64,  61,  44,  164, 0,   0,   171, 254, 145,
      187, 107, 84,  63,  104, 20,  176, 187, 202, 70,  224, 43,  144, 46,  181, 230, 173, 193, 170, 5,   221, 74,  24,
      216, 247, 118, 223, 0,   0,   218, 173, 4,   103, 38,  164, 249, 13,  179, 130, 145, 17,  51,  221, 185, 36,  85,
      189, 250, 27,  218, 134, 143, 253, 240, 24,  239, 235, 199, 52,  0,   0,   203, 51,  101, 88,  122, 163, 4,   239,
      17,  56,  83,  159, 67,  3,   206, 67,  204, 63,  250, 172, 169, 3,   232, 194, 236, 252, 221, 198, 136, 130, 0,
      0,   158, 79,  123, 233, 246, 170, 140, 212, 170, 17,  181, 93,  234, 154, 28,  72,  55,  78,  6,   7,   199, 69,
      163, 47,  107, 228, 36,  56,  66,  184, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   55,  144, 188, 52,  183, 120, 138, 238, 234, 80,  69,  125, 41,  203, 139, 194, 86,  224, 48,  144,
      21,  52,  139, 29,  49,  87,  41,  145, 195, 75,  0,   0,   240, 30,  142, 92,  174, 66,  28,  253, 72,  185, 207,
      222, 153, 253, 69,  0,   19,  102, 150, 88,  188, 61,  99,  16,  172, 57,  134, 134, 71,  81,  0,   0,   80,  151,
      98,  14,  73,  244, 5,   21,  218, 11,  97,  53,  188, 42,  137, 5,   88,  121, 183, 182, 189, 243, 217, 43,  204,
      182, 224, 175, 26,  155, 0,   0,   75,  141, 98,  239, 120, 172, 211, 157, 69,  212, 62,  197, 110, 83,  64,  126,
      232, 115, 149, 19,  171, 248, 145, 114, 106, 174, 232, 184, 163, 51,  0,   0,   107, 132, 193, 10,  6,   150, 252,
      216, 168, 237, 243, 178, 101, 112, 47,  122, 170, 197, 144, 13,  61,  219, 249, 214, 140, 229, 97,  135, 29,  184,
      0,   0,   172, 99,  250, 13,  26,  13,  135, 55,  8,   122, 102, 2,   70,  158, 210, 95,  232, 17,  212, 105, 131,
      114, 86,  84,  91,  102, 87,  93,  201, 123, 0,   0,   114, 194, 3,   197, 254, 134, 35,  53,  132, 248, 210, 2,
      37,  58,  248, 189, 6,   20,  182, 16,  75,  136, 159, 159, 199, 211, 219, 146, 97,  50,  0,   0,   165, 234, 211,
      66,  85,  96,  87,  177, 112, 195, 162, 217, 73,  114, 145, 98,  217, 92,  121, 99,  185, 5,   238, 25,  17,  86,
      28,  224, 252, 26,  0,   0,   94,  140, 176, 230, 217, 22,  5,   83,  21,  136, 96,  45,  94,  238, 159, 34,  234,
      100, 86,  80,  26,  233, 82,  60,  242, 6,   122, 61,  230, 120, 0,   0,   178, 34,  78,  39,  208, 61,  138, 8,
      18,  85,  90,  216, 240, 154, 58,  171, 92,  171, 119, 68,  156, 136, 130, 25,  145, 210, 219, 28,  88,  50,  0,
      0,   150, 3,   164, 233, 250, 72,  144, 122, 46,  228, 197, 131, 20,  217, 129, 229, 109, 41,  48,  205, 228, 235,
      36,  218, 96,  250, 12,  119, 160, 222, 0,   0,   197, 224, 119, 191, 195, 160, 190, 71,  102, 94,  105, 231, 92,
      14,  14,  71,  145, 190, 20,  191, 222, 82,  33,  196, 179, 33,  224, 138, 229, 50,  0,   0,   8,   226, 125, 220,
      109, 52,  12,  62,  143, 154, 73,  102, 21,  212, 225, 244, 200, 236, 141, 198, 207, 87,  54,  15,  34,  228, 66,
      59,  234, 23,  0,   0,   195, 179, 161, 136, 55,  235, 148, 105, 55,  57,  191, 175, 89,  112, 235, 138, 70,  122,
      168, 85,  3,   231, 105, 22,  189, 41,  11,  136, 217, 79,  0,   0,   45,  177, 192, 11,  215, 62,  147, 203, 228,
      21,  90,  251, 26,  168, 35,  153, 222, 202, 158, 241, 232, 41,  142, 220, 178, 201, 161, 143, 97,  179, 0,   0,
      244, 68,  241, 11,  235, 205, 39,  122, 94,  115, 32,  187, 191, 138, 70,  176, 171, 95,  158, 203, 202, 239, 52,
      162, 224, 155, 22,  24,  242, 183, 0,   0,   127, 230, 36,  219, 218, 132, 89,  111, 77,  94,  166, 254, 154, 200,
      19,  209, 30,  11,  202, 71,  8,   132, 157, 138, 235, 172, 106, 206, 161, 175, 0,   0,   169, 71,  205, 0,   82,
      97,  39,  250, 173, 10,  246, 162, 219, 18,  99,  34,  237, 198, 90,  121, 229, 205, 193, 174, 245, 40,  130, 52,
      228, 182, 0,   0,   250, 250, 166, 231, 8,   232, 221, 108, 23,  250, 88,  212, 67,  71,  19,  76,  221, 177, 214,
      184, 31,  144, 223, 96,  132, 5,   222, 250, 204, 227, 0,   0,   173, 42,  52,  248, 224, 134, 147, 239, 229, 22,
      228, 9,   175, 155, 120, 19,  42,  204, 24,  198, 200, 44,  118, 188, 159, 27,  38,  99,  98,  27,  0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   164, 139, 94,  201, 250, 100, 95,  251,
      230, 217, 17,  10,  34,  134, 11,  200, 165, 151, 248, 138, 112, 241, 34,  2,   131, 54,  183, 167, 26,  184, 0,
      0,   181, 36,  194, 243, 212, 42,  21,  235, 42,  25,  139, 130, 104, 149, 190, 60,  79,  144, 242, 177, 159, 61,
      217, 155, 108, 157, 170, 146, 219, 144, 0,   0,   158, 98,  226, 66,  61,  75,  39,  4,   251, 2,   31,  158, 238,
      64,  51,  207, 5,   15,  191, 56,  252, 94,  238, 38,  5,   198, 248, 234, 33,  32,  0,   0,   126, 244, 43,  20,
      75,  254, 150, 209, 203, 92,  32,  10,  142, 230, 221, 137, 235, 215, 92,  180, 156, 91,  160, 31,  137, 72,  236,
      213, 208, 166, 0,   0,   4,   56,  181, 251, 3,   68,  87,  253, 8,   57,  203, 72,  130, 6,   201, 27,  133, 60,
      222, 54,  108, 52,  253, 75,  5,   101, 227, 60,  154, 68,  0,   0,   229, 12,  118, 91,  155, 249, 65,  109, 43,
      89,  201, 215, 228, 104, 146, 211, 58,  95,  166, 188, 115, 239, 39,  11,  192, 114, 41,  11,  131, 172, 0,   0,
      252, 133, 253, 9,   129, 83,  221, 154, 60,  180, 223, 54,  73,  39,  71,  88,  155, 41,  106, 139, 181, 60,  158,
      46,  40,  248, 248, 108, 163, 148, 0,   0,   206, 229, 215, 188, 64,  102, 153, 238, 44,  109, 89,  157, 236, 121,
      27,  67,  81,  21,  122, 92,  201, 5,   75,  65,  193, 71,  115, 159, 185, 196, 0,   0,   81,  156, 204, 25,  45,
      98,  44,  198, 145, 236, 148, 114, 1,   183, 192, 41,  177, 168, 61,  141, 230, 207, 214, 151, 86,  113, 99,  74,
      145, 41,  0,   0,   65,  249, 23,  39,  102, 51,  223, 9,   159, 8,   23,  158, 63,  110, 68,  26,  52,  239, 94,
      111, 119, 169, 216, 9,   106, 163, 30,  195, 91,  12,  0,   0,   89,  82,  26,  82,  222, 24,  195, 161, 24,  119,
      129, 6,   239, 29,  157, 131, 95,  21,  201, 251, 32,  35,  127, 33,  185, 184, 202, 218, 120, 205, 0,   0,   230,
      163, 161, 22,  172, 58,  180, 172, 102, 59,  222, 19,  32,  229, 199, 186, 50,  251, 63,  60,  57,  47,  52,  27,
      91,  82,  68,  181, 35,  85,  0,   0,   179, 77,  253, 146, 194, 114, 90,  68,  226, 130, 19,  74,  190, 42,  56,
      16,  174, 21,  128, 14,  125, 116, 129, 58,  161, 185, 217, 94,  43,  252, 0,   0,   82,  120, 206, 26,  133, 214,
      63,  24,  114, 182, 243, 132, 81,  80,  218, 109, 62,  60,  163, 108, 206, 178, 233, 165, 146, 87,  180, 61,  112,
      66,  0,   0,   54,  142, 251, 232, 227, 146, 232, 87,  96,  143, 139, 142, 45,  138, 151, 216, 11,  88,  154, 218,
      125, 223, 31,  132, 85,  68,  50,  75,  59,  29,  0,   0,   64,  79,  159, 222, 35,  0,   177, 113, 107, 1,   10,
      66,  46,  200, 161, 54,  234, 212, 225, 225, 126, 89,  145, 24,  115, 179, 65,  42,  96,  56,  0,   0,   229, 92,
      163, 252, 135, 80,  27,  100, 103, 238, 236, 14,  55,  64,  127, 143, 204, 200, 50,  37,  56,  55,  121, 3,   131,
      222, 168, 92,  84,  159, 0,   0,   147, 251, 46,  81,  142, 20,  52,  209, 103, 71,  107, 246, 208, 100, 7,   58,
      224, 140, 29,  193, 142, 122, 196, 128, 216, 59,  23,  52,  48,  81,  0,   0,   44,  109, 246, 228, 144, 66,  122,
      227, 187, 164, 83,  47,  94,  184, 217, 74,  230, 58,  26,  54,  11,  29,  85,  58,  203, 75,  14,  205, 130, 88,
      0,   0,   34,  173, 114, 238, 21,  205, 95,  86,  136, 78,  141, 252, 126, 103, 173, 68,  251, 196, 81,  158, 196,
      12,  243, 118, 249, 212, 21,  56,  78,  177, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   91,  107, 46,  93,  246, 133, 173, 205, 14,  168, 56,  52,  181, 158, 188, 148, 182, 105, 244,
      4,   43,  186, 149, 93,  106, 207, 144, 243, 165, 248, 0,   0,   86,  55,  130, 98,  230, 91,  16,  137, 254, 162,
      199, 3,   2,   154, 152, 53,  182, 183, 99,  165, 196, 84,  81,  69,  203, 185, 133, 11,  192, 249, 0,   0,   238,
      63,  162, 6,   45,  199, 53,  3,   186, 167, 161, 219, 253, 187, 53,  90,  169, 22,  182, 23,  145, 12,  67,  242,
      153, 236, 127, 50,  242, 90,  0,   0,   39,  10,  238, 161, 66,  66,  79,  169, 53,  101, 222, 109, 149, 40,  86,
      67,  67,  199, 143, 253, 215, 71,  56,  208, 145, 128, 174, 94,  204, 113, 0,   0,   12,  91,  130, 102, 36,  70,
      102, 7,   226, 20,  205, 242, 166, 119, 30,  135, 153, 111, 147, 254, 203, 200, 21,  192, 157, 82,  130, 231, 165,
      214, 0,   0,   129, 121, 253, 213, 81,  55,  171, 18,  6,   138, 240, 16,  139, 170, 85,  13,  39,  254, 166, 229,
      66,  23,  12,  52,  156, 221, 13,  242, 99,  183, 0,   0,   6,   245, 87,  69,  90,  152, 3,   67,  200, 250, 116,
      143, 232, 46,  65,  192, 89,  140, 194, 238, 71,  55,  248, 250, 156, 16,  15,  37,  228, 84,  0,   0,   27,  147,
      102, 1,   68,  0,   44,  56,  55,  115, 198, 183, 71,  150, 96,  198, 50,  138, 190, 3,   167, 118, 158, 84,  78,
      161, 78,  195, 87,  160, 0,   0,   212, 59,  102, 72,  85,  185, 119, 115, 227, 87,  186, 111, 157, 16,  107, 235,
      144, 11,  129, 201, 191, 115, 25,  78,  164, 15,  115, 93,  27,  148, 0,   0,   233, 157, 59,  215, 227, 166, 151,
      166, 202, 151, 129, 10,  220, 201, 75,  39,  184, 249, 218, 133, 14,  155, 7,   237, 47,  248, 233, 8,   45,  42,
      0,   0,   9,   38,  173, 75,  76,  219, 165, 116, 78,  127, 236, 108, 89,  146, 61,  202, 97,  147, 244, 104, 41,
      61,  16,  217, 232, 209, 62,  186, 67,  183, 0,   0,   175, 118, 36,  189, 30,  209, 163, 187, 87,  52,  81,  54,
      222, 23,  40,  62,  132, 107, 116, 213, 29,  235, 112, 83,  56,  110, 111, 102, 84,  146, 0,   0,   3,   158, 249,
      6,   108, 144, 97,  220, 123, 37,  94,  166, 71,  121, 181, 94,  127, 121, 229, 17,  81,  8,   127, 10,  151, 19,
      161, 195, 46,  189, 0,   0,   140, 244, 216, 164, 167, 43,  34,  93,  121, 126, 159, 119, 44,  212, 108, 184, 217,
      41,  169, 129, 21,  107, 82,  163, 195, 135, 30,  31,  225, 191, 0,   0,   45,  204, 46,  201, 83,  111, 250, 179,
      246, 251, 48,  70,  177, 38,  215, 95,  75,  55,  222, 215, 160, 147, 31,  232, 3,   50,  200, 253, 205, 81,  0,
      0,   65,  130, 75,  217, 95,  113, 159, 162, 133, 193, 94,  118, 194, 184, 64,  176, 125, 225, 190, 58,  26,  62,
      184, 121, 218, 22,  26,  134, 121, 153, 0,   0,   75,  125, 185, 99,  47,  151, 159, 198, 132, 131, 208, 101, 14,
      7,   81,  25,  79,  101, 78,  76,  90,  224, 243, 22,  246, 190, 141, 219, 205, 150, 0,   0,   48,  183, 60,  113,
      107, 228, 161, 214, 223, 38,  52,  206, 55,  55,  172, 23,  53,  109, 42,  193, 7,   96,  207, 3,   10,  96,  47,
      139, 186, 25,  0,   0,   243, 25,  149, 170, 223, 157, 238, 86,  191, 77,  137, 136, 166, 181, 149, 121, 18,  214,
      201, 232, 9,   246, 151, 203, 162, 222, 240, 56,  28,  44,  0,   0,   239, 206, 188, 103, 235, 190, 38,  61,  124,
      40,  82,  209, 71,  46,  128, 15,  191, 220, 16,  242, 219, 23,  47,  164, 150, 24,  49,  244, 2,   87,  0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
      0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  };

  TransArgs args{
      reinterpret_cast<uint8_t *>(data),    FORMAT_FRACTAL_Z, FORMAT_HWCN, std::vector<int64_t>({9, 2, 16, 32}),
      std::vector<int64_t>({3, 3, 30, 20}), DT_UINT8};
  FormatTransferFracZHwcn transfer;
  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(ret) / sizeof(ret[0]));
  for (int i = 0; i < sizeof(ret) / sizeof(ret[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<uint8_t *>(result.data.get()))[i], ret[i]);
  }
}

TEST_F(UtestFormatTransferFracZHwcn, fp16_1c_1n_pad_cn) {
  uint16_t ret[8 * 8 * 3 * 1] = {
      13127, 14445, 15133, 14580, 14605, 15056, 15081, 14421, 14987, 12263, 12622, 12833, 14095, 14596, 15333, 14456,
      15074, 14849, 13348, 13798, 12663, 14461, 11588, 14507, 12632, 14783, 14086, 14026, 15276, 15278, 14795, 15200,
      15109, 14483, 12120, 14598, 15255, 12325, 11741, 15188, 14898, 13586, 11772, 14704, 13636, 15059, 14681, 14961,
      15070, 13559, 14070, 11768, 12341, 12688, 13874, 11886, 13396, 13482, 14753, 14270, 15218, 14829, 14957, 14860,
      15101, 14467, 15054, 6483,  13929, 14187, 13979, 14475, 14110, 14652, 15293, 15305, 14856, 14307, 14923, 14941,
      15135, 15188, 14778, 13442, 14724, 11632, 15133, 14435, 15289, 13856, 14529, 8967,  11880, 13731, 15354, 13363,
      12063, 13343, 14769, 15251, 15282, 15002, 14695, 9259,  13478, 14118, 13586, 14224, 13911, 15058, 12668, 13077,
      13212, 14749, 12748, 14577, 13872, 13508, 14117, 13519, 14989, 10590, 14688, 15162, 14365, 12335, 12946, 11510,
      15229, 12313, 14507, 13152, 13320, 14705, 13071, 15181, 8469,  15041, 14998, 14824, 14634, 14866, 10316, 14118,
      14719, 14350, 15129, 15233, 13609, 14561, 13526, 14397, 12084, 14020, 14034, 14577, 15041, 13822, 14535, 15320,
      14194, 15112, 11318, 14200, 14878, 13645, 14536, 11995, 15134, 13599, 14490, 12348, 14143, 13132, 14998, 14342,
      10944, 14585, 14425, 15088, 15120, 14816, 14879, 14120, 11740, 15202, 14342, 15044, 14402, 15057, 14616, 14987,
  };
  uint16_t data[64 * 1 * 16 * 16] = {
      13127, 14445, 15133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14580, 14605, 15056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15081, 14421, 14987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      12263, 12622, 12833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14095, 14596, 15333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14456, 15074, 14849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13348, 13798, 12663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14461, 11588, 14507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      12632, 14783, 14086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14026, 15276, 15278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14795, 15200, 15109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14483, 12120, 14598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15255, 12325, 11741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15188, 14898, 13586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      11772, 14704, 13636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15059, 14681, 14961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15070, 13559, 14070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      11768, 12341, 12688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13874, 11886, 13396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13482, 14753, 14270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15218, 14829, 14957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14860, 15101, 14467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15054, 6483,  13929, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14187, 13979, 14475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14110, 14652, 15293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15305, 14856, 14307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14923, 14941, 15135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15188, 14778, 13442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14724, 11632, 15133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14435, 15289, 13856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14529, 8967,  11880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13731, 15354, 13363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      12063, 13343, 14769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15251, 15282, 15002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14695, 9259,  13478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14118, 13586, 14224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13911, 15058, 12668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13077, 13212, 14749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      12748, 14577, 13872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13508, 14117, 13519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14989, 10590, 14688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15162, 14365, 12335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      12946, 11510, 15229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      12313, 14507, 13152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13320, 14705, 13071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15181, 8469,  15041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14998, 14824, 14634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14866, 10316, 14118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14719, 14350, 15129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15233, 13609, 14561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13526, 14397, 12084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14020, 14034, 14577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15041, 13822, 14535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15320, 14194, 15112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      11318, 14200, 14878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      13645, 14536, 11995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15134, 13599, 14490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      12348, 14143, 13132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14998, 14342, 10944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14585, 14425, 15088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15120, 14816, 14879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14120, 11740, 15202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      14342, 15044, 14402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      15057, 14616, 14987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0,     0,     0,     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  };

  FormatTransferFracZHwcn transfer;
  TransArgs args{
      reinterpret_cast<uint8_t *>(data),  FORMAT_FRACTAL_Z, FORMAT_HWCN, std::vector<int64_t>({64, 1, 16, 16}),
      std::vector<int64_t>({8, 8, 3, 1}), DT_FLOAT16};

  TransResult result;
  EXPECT_EQ(transfer.TransFormat(args, result), SUCCESS);
  EXPECT_EQ(result.length, sizeof(ret) / sizeof(ret[0]) * 2);
  for (int i = 0; i < sizeof(ret) / sizeof(ret[0]); ++i) {
    EXPECT_EQ((reinterpret_cast<uint16_t *>(result.data.get()))[i], ret[i]);
  }
}
}  // namespace formats
}  // namespace ge
